myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [Java] Nullstelle (https://mygully.com/showthread.php?t=2299286)

Maxor 04.05.11 16:58

[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 :rolleyes:)

Grüße

-Maxor

Zeodos 04.05.11 17:41

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)

Maxor 04.05.11 18:05

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 :).


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.