Frage von Larryes, 64

Java Supermarkt Kasse?

Ich würde gerne in einem Java Supermarkt der per Konsole gesteuert wird, eine Kasse einbauen, die je nachdem was man kaufen möchte, alle Preise zusammen rechnet und den Endpreis in einer Verabscheidung wie "Das macht dann bitte x €, vielen Dank für ihren Besuch und bis zum nächsten Mal." Ausserdem gibt es einen Bug mit dem ich momenntan etwas überfordert bin (hab grad erst angefange mit Java) der COde ist wie folgt :

import java.util.Scanner;

public class Supermarkt {

Scanner in = new Scanner (System.in);

boolean Wasser;
boolean Softdrinks;
boolean Milsch;
boolean Alkohol;
boolean Saft;
boolean Waschmittel;
boolean Rasierer;
boolean Zahnpflege;
boolean Shampoo;
boolean Klopapier;
boolean Fleisch;
boolean Käse;
boolean Brot;   

public void Begrüssung (){
    System.out.println("Hallo, wie kann ich ihnen helfen?");
    this.listeObergruppe();
}

public void listeObergruppe(){
    Scanner in = new Scanner (System.in);
    System.out.println("1 : Lebensmittel \n2 : Hygiene \n3 : Getränke \n4 : Dekoration \n5 : Kasse");

    int listeObergruppe;
    listeObergruppe = in.nextInt();
    switch (listeObergruppe){
        case 1:
        this.listeLebensmittel();

        case 2:
        this.listeHygiene();

        case 3:
        this.listeGetränke();

        //case 4:
        //this.listeDeko();
        
        //this.Kasse();
    }
    
}   



    public void listeLebensmittel() {
    System.out.println("1 : Fleisch \n2 : Käse \n3 : Brot");
    int listeLebensmittel;
    listeLebensmittel = in.nextInt();
    switch (listeLebensmittel){

        case 1 :
        Fleisch = true;
        case 2 :
        Käse = true;
        case 3 :
        Brot = true;
    }
}

public void listeHygiene(){
    System.out.println("1 : Waschmittel \n2 : Shampoo \n3 : Rasierer \n4 : Zahnpflege \n5 : Klopapier");
    int listeHygiene;
    listeHygiene = in.nextInt();
    switch(listeHygiene){
        case 1 :
        Waschmittel = true;
        case 2 :
        Shampoo = true;
        case 3 :
        Rasierer = true;
        case 4:
        Zahnpflege = true;
        case 5 :
        Klopapier = true;
    }

}

public void listeGetränke(){
    System.out.println("1 : Wasser \n2 : Softdrinks \n3 : Milsch \n4 : Alkohol \n5 : Saft");
    int listeGetränke;
    listeGetränke = in.nextInt();
    switch (listeGetränke){

        case 1 :
        Wasser = true;
        case 2 :
        Softdrinks=true;
        case 3 :
        Milsch = true;
        case 4:
        Alkohol = true;
        case 5 :
        Saft = true;
    }

}



//public void listeDeko(){



//public void Kasse() {
Antwort
von k3ltis, 43

Es ist noch kein Meister vom Himmel gefallen.

Allerdings hat triopasi schon recht, wenn er dir empfiehlt mal ganz unverbindlich in die Coding Conventions zu schauen.

Wenn du einen Fehler hast und dieser sich als Exception äußert, kann man nach dieser Exception suchen und findet eine Erklärung, was sie bedeutet. Abgesehen davon sind die meisten ziemlich selbsterklärend.

Ich möchte die ebenfalls ans Herz legen ein Tutorial zum Thema Debuggin zu machen. Debuggen über System-Out-Prints ist nicht nur schlechter Stil, man vergeudet auch Unmengen Zeit und findet einige Fehler damit gar nicht.

Kommentar von triopasi ,

Macht den Code halt lesbarer finde ich ;)

Ich mache das auch gern mit einfachen Konsolenausgaben (ich mein bei so Minisachen), gerade in Eclipse, da ich den Debugger da richtig mies finde.

Kommentar von Larryes ,

Es war ja auch kein vom System erkannter Fehler, ich hab's nur nicht gerafft wo die breaks hinkommen ^^

Kommentar von k3ltis ,

Benutzt du Eclipse?

Meine Lieblings-Tasten-Kombo: Strg + Shift + F

(Lass dich überraschen.)

Kommentar von Larryes ,

Nene, dürfen nur mit BlueJ arbeiten. Da wäre die Tasten Kombi strg + shift + i ^^

Kommentar von triopasi ,

Ist das nicht die Autoformatierung? (Bin inzwischen bei IntelliJ, programmiere aber auch nur selten Java, hab seit dem Umstieg nur Kleinigkeiten gemacht..)

Antwort
von triopasi, 43

Hab schon mal auf die Frage geantwortet und dir gesagt, dass du dir die Coding Convetions mal anschauen sollst! Mach das doch bitte endlich mal. 

Zudem: Was is denn dein Bug?? Ohne den zu kennen kann man dir nicht helfen.


EDIT

public void Begrüssung ()

Für sowas gehörst du geschlagen!! AUA.

Kommentar von Larryes ,

Jaaaaa, sorry. Hab nicht wirklich viel Zeit, ist 'n Schulprojekt un ich hab 'ne Deadline hab den Lehrer schon gefragt aber der meinte ich solls erstmal ohne machen. WIe gesagt : Anfänger, ist halt für mich so einfach wie möglich gehalten :). Der Bug zeichnet sich dadurch aus, dass immer wenn ich nach der Begrüssung ind die listeLebensmittel gehe per Eingabe der Ziffer 1, und dann z.B. mich für Fleisch entscheide ebenfalls Ziffer 1, dass ich dann automatisch auf listeHygiene und nachdem ich dort etwas ausgewählt habe auf die listeGetränke komme.

Kommentar von triopasi ,

Der Methodenname "kasse()" sollte z.B. klein geschrieben werden. Merkiere das, Rechtsklick > Refactor > Rename, benenne es um und clicke "ok", dann wird "Kasse()" überall zu "kasse()". Das selbe geht mit den Variablennamen.

Bei deinem SWTICH fehlen die ganzen break; Anweisungen! Sollte zB so aussehen:

case 1 :
Wasser = true; break;
case 2 :
Softdrinks=true;
break; ...

Das "case ... :" und "break" ersetzt sozusagen die geschweiften Klammern von nem IF.

Kommentar von androhecker ,

kasse() ist auch kein richtiger Methodenname, Methoden sind Verben und Objekte/Klassen Substantive. Hier wäre bezahlen() deutlich besser, wobei man eigentlich auch den Englischen Begriff, also hier pay(), benutzen sollte.

Kommentar von triopasi ,

Stimmt, Groß/Kleinschreibung wäre mal der erste Schritt.. Wollte nur mal das Refactor Tool ganz kurz vorstellen, das kann in dem Fall einiges an Arbeit sparen :)

Kommentar von androhecker ,

Mehr als nur einiges, wenn man in einem großen Projekt alle Referenzen sucht, sucht man noch in 3 Jahren.

Antwort
von androhecker, 38

Wenn ich jeden Fehler hier korrigieren würde, wäre die Anwort zehn Kilometer laeng, wie triopasi schon gesagt hat solltest du dir echt mal anschauen wie Variablen- und Methodennamen auszusehen haben.

Und noch etwas: Code kommt grundsätzlich auf eine richtige Seite wie haste- oder pastebin, das hier hat weder Syntax Highlight noch eine Formatierung in der App.

Kommentar von androhecker ,

Schlechte Bewertung? Wieso?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten