# Probleme mit dem Start einer Java Aufgabe



## ugandapresident (2. Nov 2015)

Hallo an alle,
ich hab folgendes Problem, ich habe soweit die Basics von Java drauf, ich weiß jedoch nicht wo/wie ich bei der folgenden Aufgabe anfangen soll.
Hoffe mir kann jemand auf die Sprünge helfen.


----------



## Joose (2. Nov 2015)

Du sagst die Basic sitzen soweit. Wo liegt denn nun genau dein Problem?
Weißt du nicht wie du Daten von der Konsole einlesen kannst?
Hast du schon einen Ansatz?


----------



## VfL_Freak (2. Nov 2015)

oder genauer:
http://www.java-forum.org/forum-faq-beitraege/7407-man-fragen-richtig-stellt.html

Gruß Klaus


----------



## ugandapresident (2. Nov 2015)

Sorry für die dumme Fragestellung, ich hatte jetzt doch einen Ansatz, jedoch krieg ich den Fehler 'variable "preis" might not have been initialized'. Kann mir jemand weiterhelfen?


----------



## VfL_Freak (2. Nov 2015)

Moin,

steht doch da: die Variable "preis" ist nicht initialisiert !!
Initialisiere sie 

Gruß Klaus

BTW: irgendein Bild (??) wird nicht richtig angezeigt! Post Code am Besten über den Button mit dem ToolTip "Einfügen..." (der vierte oben rechts imn Editor)
Danke !


----------



## ugandapresident (2. Nov 2015)

Gut dann hier nochmal der Code


```
public class CanteenIf {
    public static void main(String[] args) {
    int preis;
    int gericht;
    int status;
    Out.println("Sind sie (1) Studierende/r oder (2) Bedienstete/r?");
        status = In.readInt();
    Out.println("Welches Gericht möchten Sie essen, (1,2 oder 3)?");
        gericht = In.readInt();
    if (status == 1);
        if (gericht == 1)
        preis = 2;
        else if (gericht == 2)
        preis = 4;
        else if (gericht == 3)
        preis = 7;
    else if (status == 2)
        if (gericht == 1)
        preis = 4;
        else if (gericht == 2)
        preis = 5;
        else if (gericht == 3)
        preis = 8;
    Out.println("Bitte zahlen sie " + preis + " EUR");
}
}
```


----------



## VfL_Freak (2. Nov 2015)

Und?
Wo ist 'preis' jetzt initialisiert?? 

Du setzt nur einen Wert, wenn Status gleich '1' oder '2' ist.
In allen anderen Fällen (die ja nicht abgefangen werden), hätte 'preis' im 'println' keinen Wert, daher die Fehlermeldung!
Gleiches würde ggf. auch für 'gericht' gelten ....

Ist Dir denn überhaupt kalr, was INITIALISIEREN bedeutet ??

Gruß Klaus


----------



## klauskarambulut (2. Nov 2015)

```
public class CanteenIf {
  public static void main(String[] args) {
    int[][] preise = new int[3][4];
    preise[1][1] = 2;
    preise[2][1] = 4;
    preise[1][2] = 4;
    preise[2][2] = 5;
    preise[1][3] = 7;
    preise[2][3] = 8;
    Out.println("Sind sie (1) Studierende/r oder (2) Bedienstete/r?");
    int status = In.readInt();
    Out.println("Welches Gericht möchten Sie essen, (1,2 oder 3)?");
    int gericht = In.readInt();
    Out.println("Bitte zahlen sie " + preise[status][gericht] + " EUR");
  }
}
```

Brauchste gar kein if und switch sieht dann auch gleich aus 


```
public class CanteenSwitch {
  public static void main(String[] args) {
    int[][] preise = new int[3][4];
    preise[1][1] = 2;
    preise[2][1] = 4;
    preise[1][2] = 4;
    preise[2][2] = 5;
    preise[1][3] = 7;
    preise[2][3] = 8;
    Out.println("Sind sie (1) Studierende/r oder (2) Bedienstete/r?");
    int status = In.readInt();
    Out.println("Welches Gericht möchten Sie essen, (1,2 oder 3)?");
    int gericht = In.readInt();
    Out.println("Bitte zahlen sie " + preise[status][gericht] + " EUR");
  }
}
```


----------



## ugandapresident (2. Nov 2015)

Ich dachte mit "if(gericht ==1) preis =2;" würde Preis initialisiert werden, damit sollte es doch einen Wert zugewiesen kriegen.
Und es soll auch nur ein Wert gesetzt werden wenn Status gleich 1 oder 2 ist.


klauskarambulut hat gesagt.:


> ```
> public class CanteenIf {
> public static void main(String[] args) {
> int[][] preise = new int[3][4];
> ...



Danke für die Hilfe, jedoch muss ich if und switch für diese Aufgabe verwenden


----------



## VfL_Freak (2. Nov 2015)

ugandapresident hat gesagt.:


> Ich dachte mit "if(gericht ==1) preis =2;" würde Preis initialisiert werden, damit sollte es doch einen Wert zugewiesen kriegen.
> Und es soll auch nur ein Wert gesetzt werden wenn Status gleich 1 oder 2 ist.


Schon richtig, aber da dein Programm keine Eingabe à la '5' und '9' verhindert, wäre 'preis' dann eben beim 
"Out.println("Bitte zahlen sie " + preise[status][gericht] + " EUR");"
NICHT initialisiert!!

Also: entweder fängst Du gültige Eingaben beri Status und Preis ab (ist sowie angeraten) oder Du initialisierst Deine Variablen !!
ein "int preis = 0" ist doch nicht so schwer, oder ??

BTW: die Lösung mit dem Array würde ich erstmal (zumindest in dieser fehlerbehafteten Form) vergessen !!

Gruß Klaus


----------



## klauskarambulut (2. Nov 2015)

Zum einen bei if immer Klammern setzen!
Und niemals Strichpunkt dahinter habs dir mal Auskommentiert.
Und zu jedem if auch einen else Teil schreiben.

```
public class CanteenIf {
   publicstaticvoid main(String[] args){
   int preis;
   int gericht;
   int status;
    Out.println("Sind sie (1) Studierende/r oder (2) Bedienstete/r?");
        status = In.readInt();
    Out.println("Welches Gericht möchten Sie essen, (1,2 oder 3)?");
        gericht = In.readInt();
   if(status ==1) /*;*/ {
       if(gericht ==1) {
        preis =2;
       } else if(gericht ==2) {
        preis =4;
       } else if(gericht ==3) {
        preis =7;
       } else {
         //Hier passiert nichts!
       }
    } else if(status ==2) {
       if(gericht ==1) {
        preis =4;
       } else if(gericht ==2) {
        preis =5;
       } else if(gericht ==3) {
        preis =8;
      } else {
         //Hier passiert nichts!
       }
    } else {
         //Hier passiert nichts!
    }
    Out.println("Bitte zahlen sie "+ preis +" EUR");
}
}
```

Aufgabe sagt du kannst von korrekter Eingabe ausgehen, der Compiler warnt dich allerdings, dass dem nicht so sein muss. Siehe //Hier passiert nix.


----------



## ugandapresident (2. Nov 2015)

VfL_Freak hat gesagt.:


> Schon richtig, aber da dein Programm keine Eingabe à la '5' und '9' verhindert, wäre 'preis' dann eben beim
> "Out.println("Bitte zahlen sie " + preise[status][gericht] + " EUR");"
> NICHT initialisiert!!
> 
> ...


Alles klar, funktioniert jetzt.
Ich wusste nicht, oder hab zumindest nicht dran gedacht dass man einfach preis = 0 setzen kann.
Danke dir für deine Hilfe!


----------

