einer Variable KEINEN Wert zuweisen?

Status
Nicht offen für weitere Antworten.

Sowiedu

Mitglied
Hi, ich bin's nochmal ;-)

Habe ein Programm zur Mitternachtsformel geschrieben, für die die's noch nicht wissen, und habe nun folgendes Problem:

(erst der Code, zum verstehen🙂

Code:
import java.util.*;
/**
  *
  * Programm zum berechnen von x1 und x2
  * mit der Mitternachtsformel
  *
  * @version 0.1 vom 08.12.2006
  * @P.P
  */

public class Mitternachtsformel {

  public static void main(String[] args) {
    Scanner eingabe = new Scanner(System.in);
    //Variablen
    double a, b, c, xeins, xzwei, xnull;
    //Begruessung
    System.out.println("Herzlich Willkommen zum Mitternachtsberechner 0.1");
    System.out.println();
    System.out.println("Bite geben Sie a, b und c ein: ");
    System.out.print("a: ");
    a = eingabe.nextDouble();
    System.out.print("b: ");
    b = eingabe.nextDouble();
    System.out.print("c: ");
    c = eingabe.nextDouble();
    System.out.println();
    //Verarbeitung
    if (b*b-4*a*c < 0) {

      //Ausgabe fuer Diskriminante < 0
      System.out.println("Wurzel ist negativ! --> Keine Loesung");
      
    }
    else if (b*b-4*a*c == 0) {
      xnull = (-b)/(2*a);
      //Ausgabe fuer Diskriminante == 0
      System.out.print("Wurzel ist genau 0! --> Eine Loesung: "+xnull);
      
    }
    else
    xeins = (-b+Math.sqrt(b*b-4*a*c))/(2*a);
    xzwei = (-b-Math.sqrt(b*b-4*a*c))/(2*a);
    //Endausgabe für alles andere
    System.out.println("x1 = "+xeins);
    System.out.println("x2 = "+xzwei);

    
    
    
  }
}


Also der Compiler bringt folgenden Error:
Mitternachtsformel.java:45: variable xeins might not have been initialized
System.out.println("x1 = "+xeins);
__________________^

1 error


Nun weiss ich ja, dass es vorkommen KANN, dass xeins kein wert zugewiesen werden kann.
Aber wie genau kann das passieren? und wenn es passieren kann, dann müsste ich ja theoretisch in den ersten beiden IF-Teilen einfach sagen, dass weder xeins, noch xzwei ein Wert zugewiesen wird.
Geht das irgendwie? Kann ich sagen

xnull = (nix, aber wie drück ich das aus? ^^)
 
jetzt rechnest du
b*b-4*a*c
schon viermal aus, schaue bitte nochmal in den vorherigen Thread..

du könntest
xeins =0;
am Anfang schreiben,
dann hast du einen Ausgangswert,
wenn der Wert anders werden soll dann musst du ihn ändern?!
 
??? naja ich rechne den wert eben je nach fall aus.
Das mit dem xein = 0 setzen (z.B.) hab ich schon probiert, aber dann gibt er mir am ende aus "...blabla hat keine lösung", aber er gibt mir dann eben trotzdem noch

xeins = 0
xzwei = NaN

aus, kann man das nicht irgendwie eleganter lösen?
 
Wenn du im if- und else if-Zweig nach deiner Ausgabe ein "return" machst, sollte der Compiler auch nicht mehr meckern. Ansonsten beherzige den Ratschlag von Kollege Wildcard!

EDIT: Den Ratschlag des EHRENWERTEN Kollegen SlaterB!!!
 
ich muss jetzt Fernsehen (bin danach erstmal nicht mehr da)

und du musst
1.)
NOCH MAL DEN VORHERIGEN THREAD LESEN,
da steht am Ende was zum Vermeiden von '4x das gleiche ausrecnen'

2.)
genau sagen was du willst und was nicht geht,

die Fehlermeldung kommt, weil du einer Variablen nie einen Wert zugewiesen hast,
das ist verboten, nimm also immer irgendeinen Wert am Anfang, z.B. 0,
oder weise der Variablen in jedem else-Fall einen Wert zu oder oder

--------

was du sonst noch an Werten haben willst ist mir unklar,
beschreibe ganz genau was wann passieren soll,
aber eigentlich hast du ja nur ein einfaches Program mit einer if-Verzweigung,
da ist es doch nicht schwer in jedem Falle jeder Variablen das zuzuweisen was du möchtest..

edit

> Ratschlag von Kollege Wildcard

damit bin hoffentlich nicht ich gemeint 😉
obwohl, eine Ehre 😉
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben