myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[Java] Nullstelle

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 04.05.11, 16:58   #1
Maxor
 Machead
 
Benutzerbild von Maxor
 
Registriert seit: Jul 2010
Beiträge: 855
Bedankt: 631
Maxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt Punkte
Standard [Java] Nullstelle

Hey, ich wollte in meinen Pircbot einen Nullstellenrechner einbauen.

Zitat:
public class MyBot extends PircBot {

static ArrayList<String> calcvar = new ArrayList<String>();
static ArrayList<Double> calcvarval = new ArrayList<Double>();
static String botName = "Maxorbot";
Zitat:
public void onMessage(String channel, String sender,
String login, String hostname, String message) {
if(message.contains("!nullstelle")){
double ersterxwert, zweiterxwert;
String equation[] = message.split(" ");
String value1 = equation[1];
String value2 = equation[2];
String value3 = equation[3];
boolean var1Exists = calcvar.contains(equation[1]);
boolean var2Exists = calcvar.contains(equation[2]);
boolean var3Exists = calcvar.contains(equation[3]);
if(var1Exists == true){
value1 = Double.toString(calcvarval.get(calcvar.indexOf(equ ation[1])));
}
if(var2Exists == true){
value2 = Double.toString(calcvarval.get(calcvar.indexOf(equ ation[2])));
}
if(var3Exists == true){
value3 = Double.toString(calcvarval.get(calcvar.indexOf(equ ation[3])));
}
try{
if (Math.sqrt((Double.parseDouble(value2)*(Double.par seDouble(value2)))-4*(Double.parseDouble(value1))*(Double.parseDouble (value3))) <= 0) {
sendMessage(channel, sender + ": Die Diskriminante wird negativ oder 0.");
}
else
ersterxwert = (double)(-(Double.parseDouble(value2))+Math.sqrt((Double.par seDouble(value2))*(Double.parseDouble(value2)))-4*(Double.parseDouble(value1))*(Double.parseDouble (value3)))/(2*(Double.parseDouble(value1)));
zweiterxwert = (double)(-(Double.parseDouble(value2))-Math.sqrt((Double.parseDouble(value2))*(Double.par seDouble(value2)))-4*(Double.parseDouble(value1))*(Double.parseDouble (value3)))/(2*(Double.parseDouble(value1)));
sendMessage(channel, "X1: " + ersterxwert);
sendMessage(channel, "X2: " + zweiterxwert);
}catch(Exception e){
}
}
Ich bekomme bei "sendMessage(channel, "X1: " + ersterxwert);" folgenden Fehler.

Multiple markers at this line
- The local variable ersterxwert may not have been initialized

Kann mir jemand erklären wieso? (Bin nicht wirklich gut in Java )

Grüße

-Maxor
__________________
Die einfachste Art die Zukunft vorherzusagen, ist sie zu implementieren. (David Heinemeier Hansson)
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Maxor ist offline   Mit Zitat antworten
Ungelesen 04.05.11, 17:41   #2
Zeodos
Mitglied
 
Registriert seit: May 2010
Beiträge: 426
Bedankt: 224
Zeodos ist noch neu hier! | 0 Respekt Punkte
Standard

läuft das programm den schon, oder kommt der fehler beim kompilieren?

wenns beim compilieren kommt, denke ich mal, dass das problem ist, dass du ersterwert in einer if-bedingung initialisierst, sendmessage aber auf jeden fall aufrufst.

steige jetzt gerade nicht hinter den mathematischen sinn des programms, aber ich denke du möchtest

sendMessage(channel, "X1: " + ersterxwert);

nur aufrufen, wenn

if (Math.sqrt((Double.parseDouble(value2)*(Double.par seDouble(value2)))-4*(Double.parseDouble(value1))*(Double.parseDouble (value3))) <= 0)

nicht erfüllt ist, richtig?

dann hast du hinter dem else einfach die {} vergessen.

oder willst du

sendMessage(channel, "X1: " + ersterxwert);

auf jeden fall ausführen? dann musst du ersterWert noch einen wert zuweisen (am besten da, wo du die variable anlegst)
Zeodos ist offline   Mit Zitat antworten
Ungelesen 04.05.11, 18:05   #3
Maxor
 Machead
 
Benutzerbild von Maxor
 
Registriert seit: Jul 2010
Beiträge: 855
Bedankt: 631
Maxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt PunkteMaxor ist schon ein Name im Untergrund. | 954 Respekt Punkte
Standard

Zitat:
läuft das programm den schon, oder kommt der fehler beim kompilieren?
Wird in Eclipse angezeigt

Zitat:
steige jetzt gerade nicht hinter den mathematischen sinn des programms, aber ich denke du möchtest

sendMessage(channel, "X1: " + ersterxwert);

nur aufrufen, wenn

if (Math.sqrt((Double.parseDouble(value2)*(Double.par seDouble(value2)))-4*(Double.parseDouble(value1))*(Double.parseDouble (value3))) <= 0)

nicht erfüllt ist, richtig?
Ja genau, sonst ergibt das ja keinen Sinn. Danke da hab ich wohl ne Klammer übersehen .
__________________
Die einfachste Art die Zukunft vorherzusagen, ist sie zu implementieren. (David Heinemeier Hansson)
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Maxor ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 Uhr.


Sitemap

().