Probleme mit dem Start einer Java Aufgabe

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.


cb7063af17.png
 

Joose

Top Contributor
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?
 
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?

3b012a2b86.png
 

VfL_Freak

Top Contributor
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 !
 
Gut dann hier nochmal der Code

Java:
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

Top Contributor
Und?
Wo ist 'preis' jetzt initialisiert?? :confused:

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

Bekanntes Mitglied
Java:
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 ;)

Java:
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");
  }
}
 
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.
Java:
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 ;)

Java:
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");
  }
}

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

VfL_Freak

Top Contributor
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

Bekanntes Mitglied
Zum einen bei if immer Klammern setzen!
Und niemals Strichpunkt dahinter habs dir mal Auskommentiert.
Und zu jedem if auch einen else Teil schreiben.
Java:
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.
 
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
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!
 

Neue Themen


Oben