Java Buchstaben einlesen

Hannibal Smith

Jumbo Frame
🎅Rätsel-Elite ’24
Registriert
Apr. 2015
Beiträge
1.226
Hallo alle zusammen :)

Code:
import Prog1Tools.IOTools;

public class Taschenrechnerleicht {
  
  public static void main(String[] args) {
    double Mal1, Mal2, Malerg, Durch1, Durch2, Durcherg, Plus1, Plus2, Pluserg, Minus1, Minus2, Minuserg;
    int Wahl;
    char wdh;
    wdh= 1;
    do {
      
      System.out.println("+++Taschenrechner+++\n");
      System.out.println("Bitte wählen sie eine der folgenden Moeglichkeiten:");
      System.out.println("1. Addition \n2. Subtraktion \n3. Multiplikation \n4. Division");
      Wahl = IOTools.readInt("Geben sie ihre Wahl ein (1-4): ");

      if (Wahl==1) {
        Plus1= IOTools.readDouble("Geben sie ihren ersten Summanden ein:   ");
        Plus2= IOTools.readDouble("Geben sie ihren zweiten Summanden ein:  ");
        Pluserg= Plus1+Plus2;
        System.out.println("Das Ergebnis ihrer Addition ist: " + Pluserg + "");
        
        wdh= IOTools.readChar("Zum erneuten Rechnen druecken sie bitte J : ");
      } // end of if
      
      if (Wahl==2) {
        Minus1= IOTools.readDouble("Geben sie ihren Minuenden ein:      ");
        Minus2= IOTools.readDouble("Geben sie ihren Subtrahenden ein:   ");
        Minuserg= Minus1-Minus2;
        System.out.println("Das Ergebnis ihrer Subtraktion ist: " + Minuserg + "");
        
        wdh= IOTools.readChar("Zum erneuten Rechnen druecken sie bitte J : ");
      } // end of if
      
      if (Wahl==3) {
        Mal1= IOTools.readDouble("Geben sie ihren Multiplikator ein:  ");
        Mal2= IOTools.readDouble("Geben sie ihren Multiplikand ein:   ");
        Malerg= Mal1*Mal2;
        System.out.println("Das Ergebnis ihrer Multiplikation ist: " + Malerg + "");
        
        wdh= IOTools.readChar("Zum erneuten Rechnen druecken sie bitte J : ");
      } // end of if
      
      if (Wahl==4) {
        Durch1= IOTools.readDouble("Geben sie ihren Dividend ein:  ");
        Durch2= IOTools.readDouble("Geben sie ihren Divisor ein:   ");
        Durcherg= Durch1/Durch2;
        System.out.println("Das Ergebnis ihrer Division ist: " + Durcherg + "");
        
        wdh= IOTools.readChar("Zum erneuten Rechnen druecken sie bitte J : ");
      } // end of if
      
      if (Wahl>4) {
        System.out.println("Ungueltige Eingabe");
        
        wdh= IOTools.readChar("Zum erneuten Rechnen druecken sie bitte J : ");
      } // end of if
      
    } while (wdh==1); // end of do-while  
  } // end of main

} // end of class Taschenrechnerleicht

Ich bräuchte hierbei eure Hilfe ... wie lese ich ein "J" ein und gleiche es ganz unter bei while ab?
weiterhin möchte ich den screen/konsole leeren, wenn die schleife erneut läuft, find im netz ganz viele anleitungen aber keine funktioniert.
Ich hoffe dass ein paar Experten schon wach und mit Kaffee ausgerüstet sind um mir helfen zu können ;)
 
fang an mit
bool wdh = false;

wenn du die widerholung abfragst: wdh = ( wdh= IOTools.readChar("Zum erneuten Rechnen druecken sie bitte J : ") == ('J'|'j'));

Schleifenbedingung: while(wdh);
 
bei bool wdh = false spruckt er mir ne fehlermeldung aus :

cannot find symbol
symbol: class bool
 
Zu der Frage mit der Console: Klick mich und such dir was aus.

Weiterhin kannst du dir das:
Code:
double Mal1, Mal2, Malerg, Durch1, Durch2, Durcherg, Plus1, Plus2, Pluserg, Minus1, Minus2, Minuserg;
auch sparen, in dem du einfach:
Code:
double Faktor1, Faktor2, Ergebnis;

setzt und in jeder switch Anweisung halt mit diesen Variablen arbeitest. Du brauchst nicht in jeder Anweisung die andere Variablen.
 
Die hab ich ausprobiert aber weder Nr1 noch Nr2 funktionieren ...

Und die Schleife beendet sich einfach obwohl ich J drücke ... :(
Ergänzung ()

Code:
import Prog1Tools.IOTools;

public class Taschenrechnerleicht {
  
  public static void main(String[] args) {
    double Faktor1, Faktor2, Ergebnis;
    int Wahl;
    boolean wdh = false;
    
    do {
      
      System.out.println("+++Taschenrechner+++\n");
      System.out.println("Bitte wählen sie eine der folgenden Moeglichkeiten:");
      System.out.println("1. Addition \n2. Subtraktion \n3. Multiplikation \n4. Division");
      Wahl = IOTools.readInt("Geben sie ihre Wahl ein (1-4): ");
      
      if (Wahl==1) {
        Faktor1= IOTools.readDouble("Geben sie ihren ersten Summanden ein:   ");
        Faktor2= IOTools.readDouble("Geben sie ihren zweiten Summanden ein:  ");
        Ergebnis= Faktor1+Faktor2;
        System.out.println("Das Ergebnis ihrer Addition ist: " + Ergebnis + "");
        
        wdh= (wdh = IOTools.readChar("Zum erneuten Rechner druecken sie bitte J: ") == ('J'|'j'));
      } // end of if
      
      if (Wahl==2) {
        Faktor1= IOTools.readDouble("Geben sie ihren Minuenden ein:      ");
        Faktor2= IOTools.readDouble("Geben sie ihren Subtrahenden ein:   ");
        Ergebnis= Faktor1-Faktor2;
        System.out.println("Das Ergebnis ihrer Subtraktion ist: " + Ergebnis + "");
        
        wdh= (wdh = IOTools.readChar("Zum erneuten Rechner druecken sie bitte J: ") == ('J'|'j'));
      } // end of if
      
      if (Wahl==3) {
        Faktor1= IOTools.readDouble("Geben sie ihren Multiplikator ein:  ");
        Faktor2= IOTools.readDouble("Geben sie ihren Multiplikand ein:   ");
        Ergebnis= Faktor1*Faktor2;
        System.out.println("Das Ergebnis ihrer Multiplikation ist: " + Ergebnis + "");
        
        wdh= (wdh = IOTools.readChar("Zum erneuten Rechner druecken sie bitte J: ") == ('J'|'j'));
      } // end of if
      
      if (Wahl==4) {
        Faktor1= IOTools.readDouble("Geben sie ihren Dividend ein:  ");
        Faktor2= IOTools.readDouble("Geben sie ihren Divisor ein:   ");
        Ergebnis= Faktor1/Faktor2;
        System.out.println("Das Ergebnis ihrer Division ist: " + Ergebnis + "");
        
        wdh= (wdh = IOTools.readChar("Zum erneuten Rechner druecken sie bitte J: ") == ('J'|'j'));
      } // end of if
      
      if (Wahl>4) {
        System.out.println("Ungueltige Eingabe");
        
        wdh= (wdh = IOTools.readChar("Zum erneuten Rechner druecken sie bitte J: ") == ('J'|'j'));
      } // end of if
      
    } while (wdh); // end of do-while  
  } // end of main

} // end of class Taschenrechnerleicht
 
Dann machs anders:

setze oben
Code:
wdh = 'N';
und dann weiter unten
Code:
while (wdh=='J');

Ich würde vermuten, dass du sonst einen Konvertierungsfehler hast, deswegen sind die '' Zeichen um die Chars wichtig. Integer zu Char kann er konvertieren, aber ein j so nicht.

In deinem Zweiten Beispiel ist ein "wdh =" zuviel, nämlich das in der Klammer in Zeile 56
 
Zuletzt bearbeitet:
Wenn ich das wdh "zuviel" wegmache bekomme ich nen error
 
Compiliere "C:\Users\Johannes\Desktop\Johannes\Schule\(LF 6) Programmieren\Java Selbstlernen\Taschenrechnerleicht.java" mit Java-Compiler
Taschenrechnerleicht.java:56:90: error: ';' expected
wdh= IOTools.readChar("Zum erneuten Rechner druecken sie bitte J: ") == ('J'|'j'));
^
1 error
 
Ja, du hast ja auch ne Klammer zuviel weggemacht. Mach mal Klammer auf vor IOTools....

Und diesen Ausdruck musst du natürlich an den anderen Stellen auch entsprechend ändern
 
Zurück
Oben