Hilfe bei BlueJ Hausübung

aero043

Mitglied
Hallo, wie man es am Titel erkennt brauche ich dringend Hilfe mit meiner Hausübung im BlueJ Programm, ich bin ein Java Beginner und kenne mich fast garnicht aus und mache sehr sehr viele Fehler leider.

huhilfe.png

Das ist unsere Anweisung und das Ergebnis das wir haben sollten, jedoch kriege ich es mit dem "Welches Produkt möchten Sie" und dann dieses User Input irgendwie nicht hin! Egal wie viele YouTube Tutorials ich mir aufsuche es hat alles Probleme. Screenshot_48.png
Das ist mein Code bisher, ja ich weiß, es ist sehr einfach und es steht bei der Angabe dass ich eine Switch Anweisung benutzen muss aber ich verstehe nicht wo mir das exact wirklich helfen würde.. Ich frage keinem den ganzen Code für mich zu schreiben da ich auch selber was lernen will aber es ist alles so schnell und viel dass ich mich kaum auskenne. Den UserInput Teil checke ich garnicht sonst muss ich warscheinlich eine If Anweisung verwenden aber es wird warscheinlich öfters nicht klappen. Es ist 1 Uhr nachts und ich werde es noch ein paar Stunden versuchen selber hinzukriegen.. Vielen Dank für jede Hilfe im Voraus.
 
Die erste Methode hast Du ja schon fertig.

In der main-Methode sollst Du jetzt erstmal die Methode zeigeProdukte() aufrufen. Hast Du das schon?

BTW: Code bitte in Code-Tags (im Editor </> klicken) einfügen, nicht als Bild.
 
Die erste Methode hast Du ja schon fertig.

In der main-Methode sollst Du jetzt erstmal die Methode zeigeProdukte() aufrufen. Hast Du das schon?

BTW: Code bitte in Code-Tags (im Editor </> klicken) einfügen, nicht als Bild.
Oh okay, ich verstehe die ganzen Begriffe noch nicht ganz aber wenn du mit aufgerufen das hier meinst habe ich das schon gemacht:
Screenshot_49.png
Das Problem ist halt dass ich nicht weiß was ich jetzt weiter machen müsste damit man etwas eingeben kann.. Es hat irgendwas mit einer switch anweisung zu tun aber was genau..? danach müsste ich warscheinlich eine if statement gründen.
 
Oh okay, ich verstehe die ganzen Begriffe noch nicht ganz aber wenn du mit aufgerufen das hier meinst habe ich das schon gemacht:
Mit "aufrufen" meine ich den Aufruf der Methode im Code. So wie Du in Deinem Code in der Methode zeigeProdukte() die Methode System.out.println() aufrufst, sollst Du jetzt in der main-Methode eben auch Deine Methode aufrufen.

Java:
public static void main(String[] args) { // das ist die main-Methode
    zeigeProdukte();  // das ist der Methodenaufruf
    // Rest der Aufgabe soll hier erfolgen
}

Schau Dir vielleicht auch mal https://www.java-tutorial.org/erstellung-einer-startklasse-mit-bluej.html an. Mit BlueJ kenne ich mich nämlich nicht aus.

Bevor Du das nicht hast, brauchst Du gar nicht weitermachen.
 
Mit "aufrufen" meine ich den Aufruf der Methode im Code. So wie Du in Deinem Code in der Methode zeigeProdukte() die Methode System.out.println() aufrufst, sollst Du jetzt in der main-Methode eben auch Deine Methode aufrufen.

Java:
public static void main(String[] args) { // das ist die main-Methode
    zeigeProdukte();  // das ist der Methodenaufruf
    // Rest der Aufgabe soll hier erfolgen
}

Schau Dir vielleicht auch mal https://www.java-tutorial.org/erstellung-einer-startklasse-mit-bluej.html an. Mit BlueJ kenne ich mich nämlich nicht aus.

Bevor Du das nicht hast, brauchst Du gar nicht weitermachen.
Ich habe mir bereits sehr vieles angesehen um mein Wissen zu erweitern, ich habe die Methode aufgerufen wie du gesagt hast aber hab diesen sehr langen Error bekommen.

Screenshot_50.png


Ich weiß nicht was es direkt verursacht es liegt nicht an die println aufgaben die ich gemacht habe.. Ich bin echt ratlos gerade ich weiß nicht ob ich diese Aufgabe hinbringe. Es gibt keinen der mir helfen kann außer Online Foren.
 
Der Fehler bedeutet, dass Du zeigeProdukte in zeigeProdukte aufgerufen hast. Du sollst eine main-Methode wie oben erstellen.

Poste mal Deinen Code (in Code-Tags!)

Nachtrag:

Das steht in Deiner Aufgabe:
1667698092342.png
 
Zuletzt bearbeitet:
Der Fehler bedeutet, dass Du zeigeProdukte in zeigeProdukte aufgerufen hast. Du sollst eine main-Methode wie oben erstellen.

Poste mal Deinen Code (in Code-Tags!)
Java:
public class Suessigkeitenautomat
{
    public static void zeigeProdukte(){
        zeigeProdukte();
       
        System.out.println("Nr    Produkt    Preis");
        System.out.println("_______________________");
        System.out.println("1...  Mars       1.90€");
        System.out.println("2...  Bounty     1.30€");
        System.out.println("3...  Twix       1.10€");
       
        System.out.println("Welches Produkt möchten Sie?");
       
    }
       
}
Also das wäre mein Code bisher, in der Hausaufgabe steht nur dass ich nur "public static void zeigeProdukte()" gründen muss.. Der Lehrer kann wirklich nichts spezifischer erklären, Also müsste ich ungefähr so etwas machen wenn ich dich korrekt verstanden hab?

Java:
public class Suessigkeitenautomat
{
    public static void zeigeProdukte(){
       
        System.out.println("Nr    Produkt    Preis");
        System.out.println("_______________________");
        System.out.println("1...  Mars       1.90€");
        System.out.println("2...  Bounty     1.30€");
        System.out.println("3...  Twix       1.10€");
       
        System.out.println("Welches Produkt möchten Sie?");
       
    }
   
    public static void main(String[] args) {
    zeigeProdukte();
    // Und jetzt die Auswahl ?? Mit einer Switch Anweisung??
}
   
}

Aber wenn ich das mache habe ich 2 Methoden. Welche Methode müsste ich wirklich benutzen also Ausführen um letzendlich den Code hinzubekommen?
 
Also müsste ich ungefähr so etwas machen wenn ich dich korrekt verstanden hab?
Genau so ist es richtig, nur bitte auf die Einrückung achten.

Java:
public class Suessigkeitenautomat
{
    public static void zeigeProdukte(){
        
        System.out.println("Nr    Produkt    Preis");
        System.out.println("_______________________");
        System.out.println("1...  Mars       1.90€");
        System.out.println("2...  Bounty     1.30€");
        System.out.println("3...  Twix       1.10€");
        
        System.out.println("Welches Produkt möchten Sie?");
        
    }
    
    public static void main(String[] args) {
        zeigeProdukte();
        // Und jetzt die Auswahl ?? Mit einer Switch Anweisung??
    }
}

Aber wenn ich das mache habe ich 2 Methoden. Ich glaube dass mein Lehrer nur eine Methode will und dass das ganze irgendwie in einem sein soll. Ich verstehe es echt nicht.
Dein Lehrer hat in der Aufgabe genau zwei Methoden erwähnt: zeigeProdukte und die main-Methode (ich hab Dir den entsprechenden Teil der Aufgabe in Kommentar #6 nochmal reinkopiert).

Als nächstes sollst Du den Benutzer nach einem Wert fragen. Wie sollt ihr das denn machen? Mit Scanner?
 
Genau so ist es richtig, nur bitte auf die Einrückung achten.

Java:
public class Suessigkeitenautomat
{
    public static void zeigeProdukte(){
       
        System.out.println("Nr    Produkt    Preis");
        System.out.println("_______________________");
        System.out.println("1...  Mars       1.90€");
        System.out.println("2...  Bounty     1.30€");
        System.out.println("3...  Twix       1.10€");
       
        System.out.println("Welches Produkt möchten Sie?");
       
    }
   
    public static void main(String[] args) {
        zeigeProdukte();
        // Und jetzt die Auswahl ?? Mit einer Switch Anweisung??
    }
}


Dein Lehrer hat in der Aufgabe genau zwei Methoden erwähnt: zeigeProdukte und die main-Methode (ich hab Dir den entsprechenden Teil der Aufgabe in Kommentar #6 nochmal reinkopiert).

Als nächstes sollst Du den Benutzer nach einem Wert fragen. Wie sollt ihr das denn machen? Mit Scanner?
Vielen Dank für die Anmerkung das mit der Main Methode hätte ich verpasst. Und das nächste ist mein Hauptproblem seit ein paar Stunden, wir haben noch nichts von einem Scanner erfahren wir haben bisher nur mit IO, readInt usw gearbeitet. Wenn ich Online suche finde ich nur Scanner antworten aber ich glaube dass wir eher irgendwas mit readInt oder ähnliches machen müssten. Ich wüsste nicht wie das mit einem IO geht wenn das überhaupt möglich ist aber vielleicht mit readInt. Wenn das alles nicht geht müsste ich warscheinlich einen Scanner benutzen um wenigstens die Hausübung abzugeben und dann in der Schule nachzufragen.
 
Könntest du mir bitte ein Beispiel geben bin gerade extrem verwirrt oder war die Antwort sarkastisch gemeint?
Wo genau muss ich Switch in der Aufgabe verwenden..?
Nein, die Antwort war nicht sarkastisch gemeint. Das ist der nächste Schritt:

1667699424590.png

Ein Beispiel kann ich Dir nicht geben, da ich die Klassen nicht kenne, die ihr verwendet. Aber wenn Du schon mit readInt gearbeitet hast, dann musst Du ja wissen, wie Du die Methode verwenden kannst.

Und switch kommt erst ganz am Schluss.
 
Nein, die Antwort war nicht sarkastisch gemeint. Das ist der nächste Schritt:

Anhang anzeigen 19534

Ein Beispiel kann ich Dir nicht geben, da ich die Klassen nicht kenne, die ihr verwendet. Aber wenn Du schon mit readInt gearbeitet hast, dann musst Du ja wissen, wie Du die Methode verwenden kannst.

Und switch kommt erst ganz am Schluss.
Man. Ich habe keine Ahnung wie das mit readInt gehen sollte und ich finde auch keine Tutorials aus irgendeinem Grund Ich verstehe nicht warum es keine Tutorials darüber geben würde nicht mal ein einziges?? Aber werde jetzt in den nächsten Stunden noch rumversuchen hoffentlich schaffe ich etwas. Danke für die Hilfe!
 
Ich persönlich warscheinlich nicht, ich gehe gerade ein paar ehemaligen Schulübungen durch und ich habe erstmal bemerkt dass wir return oft verwendet haben, wenn das überhaupt dazu passt und was bringen könnte. Das hier als Beispiel:

Java:
public class Taschenrechner{
   
    public static int addieren(int a, int b)
    {
    int sum = a + b;
   
   
    return sum;
       
    }
}

oder so etwas:

Java:
public class Umrechner
{
   
    public static int berechneGramm(int kilogramm, int dekagramm, int gramm)
    {
       
    int sum = kilogramm * 1000 + dekagramm * 10 + gramm;
    return sum;
   
    }
}

UND ENDLICH ICH HABS GEFUNDEN!
DAS HIER IST DER CODE

Java:
public class Zeitdifferenz
{

    public static void main(String[] args) {
        IO io = new IO();
        io.println("Erste Stundenzahl eingeben");
        int hour1 = io.readInt();
        io.println("Erste Minutenzahl eingeben");
        int min1 = io.readInt();
        io.println("Erste Sekundenzahl eingeben");
        int sec1 = io.readInt();
       
        io.println("Zweite Stundenzahl eingeben");
        int hour2 = io.readInt();
        io.println("Zweite Minutenzahl eingeben");
        int min2 = io.readInt();
        io.println("Zweite Sekundenzahl eingeben");
        int sec2 = io.readInt();
       
        hour1 = hour1 * 3600;
        hour2 = hour2 * 3600;
        min1 = min1 * 60;
        min2 = min2 * 60;
       
        int sumUhrzeit1 = hour1 + min1 + sec1;
        int sumUhrzeit2 = hour2 + min2 + sec2;
        int sumDifferenz = sumUhrzeit2 - sumUhrzeit1;
        int sumDiffMin = sumDifferenz / 60;
        int sumDiffHour = sumDiffMin / 60;
        sumDiffMin = sumDiffMin % 60;
        int sumDiffSec = sumDifferenz % 60;
        io.println(sumDiffHour + ":" + sumDiffMin + ":" + sumDiffSec);
       
            }
    }

Ich hätte trotzdem eine Frage und die wäre muss ich irgendetwas spezielles installieren um IO zu verwenden? Weil ich glaube das normale BlueJ hat das nicht und man muss irgendwas ausführen.
 
UND ENDLICH ICH HABS GEFUNDEN!
DAS HIER IST DER CODE
Na, also, da siehst Du doch wie es funktioniert. Du erstellst erstmal ein IO-Objekt:
Java:
IO io = new IO();
und liest dann ein, welche Auswahl der Benutzer getroffen hat:
Java:
int auswahl = io.readInt();
Zum Testen gibst Du das erstmal aus:
Java:
System.out.println("Auswahl: " + auswahl);

Wenn das funktioniert, machst Du den nächsten Schritt der Aufgabe: wenn die Eingabe < 1 oder > 3 ist, gibst Du aus, dass sie falsch war.
 
Ich hätte trotzdem eine Frage und die wäre muss ich irgendetwas spezielles installieren um IO zu verwenden? Weil ich glaube das normale BlueJ hat das nicht und man muss irgendwas ausführen.
Ganz übersehen: das kann durchaus sein, dass Du da eine Bibliothek angeben musst. Vielleicht ist das auch einfach nur eine Datei IO.java, die Du zu Deinem Projekt hinzufügen musst.
 
Ganz übersehen: das kann durchaus sein, dass Du da eine Bibliothek angeben musst. Vielleicht ist das auch einfach nur eine Datei IO.java, die Du zu Deinem Projekt hinzufügen musst.
Danke!! Endlich komme ich weiter, bin aber schon wieder stehen geblieben.
Java:
public class Suessigkeitenautomat
{

    public static void zeigeProdukte(){
        IO io = new IO();
        io.println("Nr    Produkt    Preis");
        io.println("_______________________");
        io.println("1...  Mars       1.90€");
        io.println("2...  Bounty     1.30€");
        io.println("3...  Twix       1.10€");
       
        System.out.println("Welches Produkt möchten Sie?");
    }
   
    public static void main(String[] args) {
    zeigeProdukte();
    IO io = new IO();
    int auswahl = io.readInt();
   
    if(auswahl < 1)
        {
            io.println("Eingabe falsch!");
        }
       
    if(auswahl > 3)
        {
            io.println("Eingabe falsch!");
        }
   
    io.println("Mit wie viel Geld haben Sie bezahlt?");
    int geld = io.readInt();
   
   
   
}
   
}
Code:
DScreenshot_51.pngas ist mein Code bisher, alles funktioniert das hier ist die Ausgabe:

Jetzt wüsste ich aber nicht genau wie ich das Wechselgeld ausrechne vorallem wenn ich noch garkeine wirklichen Preise angegeben habe. Ich nehme an jetzt kommt die Switch Anweisung, oder? Wie genau müsste ich jetzt vorgehen?

Und ja, die IO Datei musste ich irgendwo installieren ich habe Glück dass ich sie einmal schon gesehen hatte bin darauf wieder gestoßen und habs ins BlueJ Folder reingetan.
 
Zuerst kommt noch die Abfrage, ob er genügend bezahlt hat...

Ich nehme an jetzt kommt die Switch Anweisung, oder? Wie genau müsste ich jetzt vorgehen?
Richtig.

Java:
switch (auswahl) {
    case 1: // Benutzer hat die 1 gewählt
        break;
    case 2: // Benutzer hat die 2 gewählt
        break;
    default: // alle anderen Fälle (hier also: Benutzer hat die 3 gewählt)
        break;
}

In den Zeilen zwischen dem case und dem break fügst Du jetzt einfach den Code (je Fall) ein. Die Preise kennst Du ja pro Fall.
 
Ganz übersehen: das kann durchaus sein, dass Du da eine Bibliothek angeben musst. Vielleicht ist das auch einfach nur eine Datei IO.java, die Du zu Deinem Projekt hinzufügen musst.
Nach ein bisschen rumtesten hab ich diesen Code hier erstellt
Java:
public class Suessigkeitenautomat
{

    public static void zeigeProdukte(){
        IO io = new IO();
        io.println("Nr    Produkt    Preis");
        io.println("_______________________");
        io.println("1...  Mars       1.90€");
        io.println("2...  Bounty     1.30€");
        io.println("3...  Twix       1.10€");
        
        System.out.println("Welches Produkt möchten Sie?");
    }
    
    public static void main(String[] args) {
    zeigeProdukte();
    IO io = new IO();
    int auswahl = io.readInt();
    
    if(auswahl < 1)
        {
            io.println("Eingabe falsch!");
        }
        
    if(auswahl > 3)
        {
            io.println("Eingabe falsch!");
        }
    
    if(auswahl == 1){
        double Geldabzug = 1.90;
        io.println("Mit wie viel Geld haben Sie bezahlt?");
        int geld = io.readInt();
        io.println("Wechselgeld beträgt " + geld + Geldabzug);
    }
    
    if(auswahl == 2){
        double Geldabzug = 1.30;
        io.println("Mit wie viel Geld haben Sie bezahlt?");
        int geld = io.readInt();
        io.println("Wechselgeld beträgt " + geld + Geldabzug);
    }
    
    if(auswahl == 3){
        double Geldabzug = 1.10;
        io.println("Mit wie viel Geld haben Sie bezahlt?");
        int geld = io.readInt();
        io.println("Wechselgeld beträgt " + geld + Geldabzug);
    }
    
    
    
}
    
}

Nun das einzige womit ich hilfe brauche ich wie ich das mit einer Switch Anweisung mache und dass es nicht das Geld addiert sondert subtrahiert. Jetzt mit diesem Code wenn ich die Produkt 3 auswähle und dann 10 Geld bezahle kommt so etwas raus. Deswegen brauche ich warscheinlich eine Switch Anweisung und dann irgendwie subtrahieren was ich noch nie getan habe.

Screenshot_52.png
 
Also, Du benötigst doch a) den Preis des gewählten Produkts und b) den Namen des gewählten Produkts.
Java:
double produktPreis;
String produktName;

switch (auswahl) {
     case 1: produktPreis = 1.9;
             produktName = "Mars";
             break;
     case 2: // usw.
}

Danach kannst Du anhand des produktPreis testen, ob genügend Geld gegeben wurde und das Wechselgeld ausrechnen. Ganz am Ende gibst Du nur noch aus, welches Produkt gewählt wurde und wie hoch das Wechselgeld ist.
 
Halte Dich genau an die Aufgabenstellung (s. auch Kommentar #19).
Java:
switch(auswahl) {
        case 1:
            double Geldabzug1 = 1.90;
        io.println("Mit wie viel Geld haben Sie bezahlt?");
        int geld1 = io.readInt();
        io.println("Sie haben ein Mars bestellt und Ihr Wechselgeld beträgt" geld1 - Geldabzug1 + "€");
            break;
            
        case 2:
            double Geldabzug2 = 1.30;
            io.println("Mit wie viel Geld haben Sie bezahlt?");
            int geld2 = io.readInt();
            io.println("Sie haben ein Bounty bestellt und Ihr Wechselgeld beträgt" geld2 - Geldabzug2 + "€");
            break;
            
        default:
            double Geldabzug3 = 1.10;
            io.println("Mit wie viel Geld haben Sie bezahlt?");
            int geld3 = io.readInt();
            io.println("Sie haben ein Twix bestellt und Ihr Wechselgeld beträgt" geld3 - Geldabzug3 + "€");
            break;
    }

Das ist was ich verwendet habe aber es steht Errors found in Class bei genau dem minus, ich wüsste nicht genau wie man eine Zahl von einer anderen abzieht ich dachte es geht mit einem minus aber das ist nicht der Fall glaube ich.
 
Also, Du benötigst doch a) den Preis des gewählten Produkts und b) den Namen des gewählten Produkts.
Java:
double produktPreis;
String produktName;

switch (auswahl) {
     case 1: produktPreis = 1.9;
             produktName = "Mars";
             break;
     case 2: // usw.
}

Danach kannst Du anhand des produktPreis testen, ob genügend Geld gegeben wurde und das Wechselgeld ausrechnen. Ganz am Ende gibst Du nur noch aus, welches Produkt gewählt wurde und wie hoch das Wechselgeld ist.
Java:
switch(auswahl) {
        case 1: produktPreis = 1.90;
                produktName = "Mars";
                io.println("Mit wie viel Geld haben Sie bezahlt?");
                int geld1 = io.readInt();
                io.println("Sie haben ein Mars bestellt und Ihr Wechselgeld beträgt " + "€");
                break;
                
        case 2: produktPreis = 1.30;
                produktName = "Bounty";
                io.println("Mit wie viel Geld haben Sie bezahlt?");
                int geld2 = io.readInt();
                io.println("Sie haben ein Bounty bestellt und Ihr Wechselgeld beträgt " + "€");
                break;
                
        case 3: produktPreis = 1.10;
                produktName = "Twix";
                io.println("Mit wie viel Geld haben Sie bezahlt?");
                int geld3 = io.readInt();
                io.println("Sie haben ein Twix bestellt und Ihr Wechselgeld beträgt " + "€");
                break;
                
    }

Danke für den Hinweis ich habe das implementiert nun brauche ich nur noch herauszufinden wie man genau die Preise subtrahiert und dann sollte ich hoffentlich schon fertig sein.
 
So war das nicht gemeint 🙂 Du kannst den ganzen Code einmal hinter das switch ziehen:

Java:
// das soll laut Aufgabenstellung vorher kommen

io.println("Mit wie viel Geld haben Sie bezahlt?");
int geld = io.readInt();

// jetzt brauchen wir die Preise
switch(auswahl) {
    case 1: produktPreis = 1.90;
            produktName = "Mars";
            break;
              
    case 2: produktPreis = 1.30;
            produktName = "Bounty";
            break;
              
    default: produktPreis = 1.10;
            produktName = "Twix";
            break;              
}

// jetzt können wir prüfen, ob genügend Geld gegeben wurde
if (...) {
}

// dann können wir das Wechselgeld berechnen
double wechselgeld = geld - produktPrreis;

// und jetzt können wir den Spaß ausgeben
io.println("Sie haben ein " + produktName + " bestellt und Ihr Wechselgeld beträgt " + wechselgeld + " €");

Das ist was ich verwendet habe aber es steht Errors found in Class bei genau dem minus, ich wüsste nicht genau wie man eine Zahl von einer anderen abzieht ich dachte es geht mit einem minus aber das ist nicht der Fall glaube ich.
Doch, die Fehler kommen kommen daher, dass Du vor den Geld-Variablen kein + stehen hast und Java von links nach rechts auswertet.

Fügen wir mal das + ein, dann haben wir:
Java:
"Sie haben" + geld3 - Geldabzug3

Das funktioniert nicht, weil Java von links nach rechts auswertet, also "Sie haben " + geld3 zu einem String wird und von einem String kann man keine Zahl abziehen. Wie in Mathe muss man in dem Fall Klammern setzen:

Java:
"Sie haben " + (geld3 - Geldabzug3)
Jetzt wird zuerst geld3 - Geldabzug3 ausgewertet und das Ergebnis ist eine Zahl, die dann zu einem String hinzugefügt wird.

Es ist sauberer, eine Variable einfuzühren, wie oben.
 
So war das nicht gemeint 🙂 Du kannst den ganzen Code einmal hinter das switch ziehen:

Java:
// das soll laut Aufgabenstellung vorher kommen

io.println("Mit wie viel Geld haben Sie bezahlt?");
int geld = io.readInt();

// jetzt brauchen wir die Preise
switch(auswahl) {
    case 1: produktPreis = 1.90;
            produktName = "Mars";
            break;
             
    case 2: produktPreis = 1.30;
            produktName = "Bounty";
            break;
             
    default: produktPreis = 1.10;
            produktName = "Twix";
            break;             
}

// jetzt können wir prüfen, ob genügend Geld gegeben wurde
if (...) {
}

// dann können wir das Wechselgeld berechnen
double wechselgeld = geld - produktPrreis;

// und jetzt können wir den Spaß ausgeben
io.println("Sie haben ein " + produktName + " bestellt und Ihr Wechselgeld beträgt " + wechselgeld + " €");


Doch, die Fehler kommen kommen daher, dass Du vor den Geld-Variablen kein + stehen hast und Java von links nach rechts auswertet.

Fügen wir mal das + ein, dann haben wir:
Java:
"Sie haben" + geld3 - Geldabzug3

Das funktioniert nicht, weil Java von links nach rechts auswertet, also "Sie haben " + geld3 zu einem String wird und von einem String kann man keine Zahl abziehen. Wie in Mathe muss man in dem Fall Klammern setzen:

Java:
"Sie haben " + (geld3 - Geldabzug3)
Jetzt wird zuerst geld3 - Geldabzug3 ausgewertet und das Ergebnis ist eine Zahl, die dann zu einem String hinzugefügt wird.

Es ist sauberer, eine Variable einfuzühren, wie oben.
Hab irgendsoeinen Switch zusammengebracht durchs inspirieren aber werde trotzdem deines kurz testen und es warscheinlich verwenden. 1 Minute.

Java:
double produktPreis;
    String produktName;
    
    switch(auswahl) {
        case 1: produktPreis = 1.90;
                produktName = "Mars";
                io.println("Mit wie viel Geld haben Sie bezahlt?");
                int geld1 = io.readInt();
                if(geld1 < 1.90){
                    io.println("Nicht genug Geld!");
                    break;
                }
                io.println("Sie haben ein Mars bestellt und Ihr Wechselgeld beträgt ");
                io.print(geld1-produktPreis);
                io.print("€");
                break;
                
        case 2: produktPreis = 1.30;
                produktName = "Bounty";
                io.println("Mit wie viel Geld haben Sie bezahlt?");
                int geld2 = io.readInt();
                if(geld2 < 1.30){
                    io.println("Nicht genug Geld!");
                    break;
                }
                io.println("Sie haben ein Bounty bestellt und Ihr Wechselgeld beträgt ");
                io.print(geld2-produktPreis);
                io.print("€");
                break;
                
        case 3: produktPreis = 1.10;
                produktName = "Twix";
                io.println("Mit wie viel Geld haben Sie bezahlt?");
                int geld3 = io.readInt();
                if(geld3 < 1.10){
                    io.println("Nicht genug Geld!");
                    break;
                }
                io.print("Sie haben ein Twix bestellt und Ihr Wechselgeld beträgt "); io.print(geld3-produktPreis);
                io.print("€");
                break;
                
    }
 
So war das nicht gemeint 🙂 Du kannst den ganzen Code einmal hinter das switch ziehen:

Java:
// das soll laut Aufgabenstellung vorher kommen

io.println("Mit wie viel Geld haben Sie bezahlt?");
int geld = io.readInt();

// jetzt brauchen wir die Preise
switch(auswahl) {
    case 1: produktPreis = 1.90;
            produktName = "Mars";
            break;
             
    case 2: produktPreis = 1.30;
            produktName = "Bounty";
            break;
             
    default: produktPreis = 1.10;
            produktName = "Twix";
            break;             
}

// jetzt können wir prüfen, ob genügend Geld gegeben wurde
if (...) {
}

// dann können wir das Wechselgeld berechnen
double wechselgeld = geld - produktPrreis;

// und jetzt können wir den Spaß ausgeben
io.println("Sie haben ein " + produktName + " bestellt und Ihr Wechselgeld beträgt " + wechselgeld + " €");


Doch, die Fehler kommen kommen daher, dass Du vor den Geld-Variablen kein + stehen hast und Java von links nach rechts auswertet.

Fügen wir mal das + ein, dann haben wir:
Java:
"Sie haben" + geld3 - Geldabzug3

Das funktioniert nicht, weil Java von links nach rechts auswertet, also "Sie haben " + geld3 zu einem String wird und von einem String kann man keine Zahl abziehen. Wie in Mathe muss man in dem Fall Klammern setzen:

Java:
"Sie haben " + (geld3 - Geldabzug3)
Jetzt wird zuerst geld3 - Geldabzug3 ausgewertet und das Ergebnis ist eine Zahl, die dann zu einem String hinzugefügt wird.

Es ist sauberer, eine Variable einfuzühren, wie oben.
DANKE!!! VIELEN DANK!!! Ich habe mich schon gewundert bevor ich nach Hilfe frage, dass überhaupt irgendjemand noch wach ist und mir helfen würde aber vielen dank man! Ich bin echt unendlich dankbar für diese Hilfe. Das hier ist der Finale Code falls es dich interessiert und es funktioniert alles perfekt dank nur dir!

Java:
public class Suessigkeitenautomat
{

    public static void zeigeProdukte(){
        IO io = new IO();
        io.println("Nr    Produkt    Preis");
        io.println("_______________________");
        io.println("1...  Mars       1.90€");
        io.println("2...  Bounty     1.30€");
        io.println("3...  Twix       1.10€");
        
        System.out.println("Welches Produkt möchten Sie?");
    }
    
    public static void main(String[] args) {
    zeigeProdukte();
    IO io = new IO();
    int auswahl = io.readInt();
    
    if(auswahl < 1)
        {
            io.println("Eingabe falsch!");
        }
        
    if(auswahl > 3)
        {
            io.println("Eingabe falsch!");
        }
    
    double produktPreis;
    String produktName;
    
    io.println("Mit wie viel Geld haben Sie bezahlt?");
    int geld = io.readInt();
    
    switch(auswahl){
        case 1: produktPreis = 1.90;
                produktName = "Mars";
                if(geld < produktPreis){
                    io.println("Zu wenig Geld!");
                    break;
                }
                double wechselgeld1 = geld - produktPreis;
                io.println("Sie haben ein " + produktName + " bestellt und ihr Wechselgeld beträgt " + wechselgeld1 + " €");
                break;
        
        case 2: produktPreis = 1.30;
                produktName = "Bounty";
                if(geld < produktPreis){
                    io.println("Zu wenig Geld!");
                    break;
                }
                double wechselgeld2 = geld - produktPreis;
                io.println("Sie haben ein " + produktName + " bestellt und ihr Wechselgeld beträgt " + wechselgeld2 + " €");
                break;
                
        case 3: produktPreis = 1.10;
                produktName = "Twix";
                if(geld < produktPreis){
                    io.println("Zu wenig Geld!");
                    break;
                }
                double wechselgeld3 = geld - produktPreis;
                io.println("Sie haben ein " + produktName + " bestellt und ihr Wechselgeld beträgt " + wechselgeld3 + " €");
                break;
    }
    
    
}
    
}
 
Und, würdest Du sagen, dass das schwer war?

Aber schauen wir mal, ob Du fertig bist... Lt. Aufgabe soll zeigeProdukte() nicht nach der Produktwahl des Benutzers fragen (Zeile 12 gehört nach main). Der Rest dürfte funktionieren, auch wenn Du immer noch viel doppelten Code hast.

Ein paar Hinweise:

Die Zeilen 20 bis 28 kannst Du mit einem logischen ODER zusammenfassen. Außerdem könnte man an der Stelle bereits aus der Methode zurückspringen, dann wird der Rest gar nicht erst ausgeführt:

Java:
if (auswahl < 1 || auswahl > 3) {
    io.println("Eingabe falsch");
    return;
}

Naja, und die Sache mit dem Code hinter den Switch ziehen, habe ich ja vorhin schon gezeigt.
 

Zurück
Oben