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.
 

mihe7

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

aero043

Mitglied
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.
 

mihe7

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

aero043

Mitglied
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.
 

mihe7

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

aero043

Mitglied
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?
 

mihe7

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

aero043

Mitglied
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.
 

mihe7

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

aero043

Mitglied
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!
 

aero043

Mitglied
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.
 

mihe7

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

mihe7

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

aero043

Mitglied
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.
 

mihe7

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

aero043

Mitglied
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
 

mihe7

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

aero043

Mitglied
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.
 

aero043

Mitglied
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.
 

mihe7

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

aero043

Mitglied
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;
                
    }
 

aero043

Mitglied
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;
    }
    
    
}
    
}
 

mihe7

Top Contributor
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.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Klassen Hilfe bei BlueJ, Supermario Java Basics - Anfänger-Themen 5
E Hilfe bei Lambda-Ausdrücken in BlueJ Java Basics - Anfänger-Themen 1
P Java mit BlueJ - Hilfe - Gegenstände Java Basics - Anfänger-Themen 10
R BlueJ - Hilfe bei for-Struktur Java Basics - Anfänger-Themen 11
S Erste Schritte BlueJ-Aufgabe: Programmcode / Brauche dringend Hilfe !!! Java Basics - Anfänger-Themen 37
X Methoden Java Dublikatsuche Hilfe(BlueJ) Java Basics - Anfänger-Themen 9
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
H pdf stempel - Hilfe erbeten Java Basics - Anfänger-Themen 6
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
A Hilfe beim Lesen von Pfaden und Systemvariablen Java Basics - Anfänger-Themen 3
F RegEx Hilfe Java Basics - Anfänger-Themen 5
S Hilfe bei Endlosschleife Java Basics - Anfänger-Themen 2
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
U Ich bräuchte Hilfe Java Basics - Anfänger-Themen 1
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
P Hilfe gesucht Java Basics - Anfänger-Themen 11
D Hilfe bei Calculator Test Java Basics - Anfänger-Themen 15
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
R Java Bücher hilfe Java Basics - Anfänger-Themen 9
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
I Scheduling: "Quartz" verwenden, Hilfe bei Umstellung Java Basics - Anfänger-Themen 3
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
SpiritsHuner Hilfe!! Java Basics - Anfänger-Themen 16
Lacotto Java Kurs Aufgaben Hilfe Java Basics - Anfänger-Themen 14
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
X Hilfe beim Übertragen in eine For-Schleife Java Basics - Anfänger-Themen 1
Neuling47 Denkfehler? Hilfe Java Basics - Anfänger-Themen 11
S Hilfe bei Umänderung von Java Code Java Basics - Anfänger-Themen 16
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Bitte um Hilfe muss es schnellstmöglich erledigen Java Basics - Anfänger-Themen 15
L Hilfe bei RegEx Java Basics - Anfänger-Themen 4
I Bitte um Hilfe zu unterstehenden Code Java Basics - Anfänger-Themen 6
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
Neuling47 bräuchte dringend hilfe Java Basics - Anfänger-Themen 6
D Bräuchte Hilfe im Bezug zum printarray() Java Basics - Anfänger-Themen 4
M Bitte um Hilfe bei 2DArrays Java Basics - Anfänger-Themen 8
HeiTim Array hilfe Java Basics - Anfänger-Themen 14
M LCD-Ziffern-Hilfe Java Basics - Anfänger-Themen 6
özkan hilfe!! Java Basics - Anfänger-Themen 4
C Hilfe bei einem Anfängerprojekt Java Basics - Anfänger-Themen 25
D Abrechnung bitte um hilfe Java Basics - Anfänger-Themen 25
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
N Hilfe bei der Installation Java Basics - Anfänger-Themen 2
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
S Hilfe bei Programmierung einer Hotelabrechnung Java Basics - Anfänger-Themen 5
enjoykimii Strukturierte Programmierung Hilfe Java Basics - Anfänger-Themen 29
H Bräuchte hilfe Java Basics - Anfänger-Themen 3
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
H Brauche Hilfe Java Basics - Anfänger-Themen 2
D Dijkstra Algorithmus Hilfe!! Java Basics - Anfänger-Themen 9
H Hilfe Java Basics - Anfänger-Themen 6
H Brauche hilfe Java Basics - Anfänger-Themen 3
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
kevkev Hilfe bei Schiffe versenken Java Basics - Anfänger-Themen 5
FelixxF Erste Schritte Hilfe bei Fußball Manager Java Basics - Anfänger-Themen 2
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
josfe1234 Hilfe access denied ("java.io.FilePermission" " " "read") Java Basics - Anfänger-Themen 12
Vivien Hilfe bei Type Conversion Java Basics - Anfänger-Themen 3
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
N Laufzeitberechnung - dringende Hilfe! Java Basics - Anfänger-Themen 1
G Java Hilfe Java Basics - Anfänger-Themen 3
J Java List, Bitte um Hilfe Java Basics - Anfänger-Themen 15
J Java List, bitte um Hilfe Java Basics - Anfänger-Themen 3
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
A Schleifen, Hilfe! Java Basics - Anfänger-Themen 6
LeonDerStudent Hilfe bei Uniprojekt Java Basics - Anfänger-Themen 2
H Brauche Hilfe in Java Eclipse Programmieraufgabe Neuling Java Basics - Anfänger-Themen 3
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
Kapfski Was habe ich falsch gemacht? Hilfe! Java Basics - Anfänger-Themen 17
R Java (Eclipse) "Lagerverwaltung" HILFE Java Basics - Anfänger-Themen 13
M Bräuchte Hilfe bei diesen Methoden Java Basics - Anfänger-Themen 4
dieter000 Aufgabe Hilfe Java Basics - Anfänger-Themen 18
Gaudimagspam Dringend Java Hilfe benötigt Java Basics - Anfänger-Themen 19
jonathanpizza Hilfe bei einer Übungsaufgabe Java Basics - Anfänger-Themen 6
dieter000 Hilfe bei dem Beispiel, wie gehe ich sowas am besten an? Java Basics - Anfänger-Themen 32
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
Q Hilfe auf Aufgabe(Matrixmultiplikation) Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 19
pry bitte Hilfe beim Kreditrechner objektorientiert Java Basics - Anfänger-Themen 6
R Hilfe bei removeduplicates Java Basics - Anfänger-Themen 5
D Brauche Dringend Hilfe...Prozedur/Funktionsprozedur Ergebnis augeben Java Basics - Anfänger-Themen 11
marcooooo einmal noch schnell hilfe bitte:/ Java Basics - Anfänger-Themen 2
Q Hilfe bei Hausaufgeben Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben