Wincenty
PCGHX-HWbot-Member (m/w)
Hallo,
wie besagt habe ich 2 Probleme:
einmal bekomme ich es nicht richtig hin den switch case zu benutzen.
und das andere ist das ich eine kleine do Schleife nicht ordentlich hin bekomme am ende einer Großen.
Hier der Basis-kode mit dem ich gearbeitet hab, also da ist keine Switch Case sondern nur if s und die kleine Schleife fehlt ebenfalls
Hier ist der Code bei dem ich Probleme habe, als Komment hab ich das Problem in der Zeile beschrieben und was ich haben will.
Also ich will erst einen Operator also + - * / vergleichen, die eingabe hat ja als ein String begonnen, den ich danach splitte.
Die Zahlen habe ich umgewandelt bekommen, aber ich weiß nicht warum er mir immer default ausgibt, selbst wenn die char einem case entsprechen.
Am Ende fragt das Programm ob es enden soll, bei Y einfach break; bei N nochmals durchlaufen und bei jeder anderen Eingabe soll die Auswahl Y/N erneut stattfinden -> also das while verursacht mir die Probleme bei true und false bei eingabe Y läuft es dennoch weiter wo es doch beendet sein sollte und bei true und N bricht er ab [soll er nicht] und bei false und N macht er die Schleife [soll er]
wie besagt habe ich 2 Probleme:
einmal bekomme ich es nicht richtig hin den switch case zu benutzen.
und das andere ist das ich eine kleine do Schleife nicht ordentlich hin bekomme am ende einer Großen.
Hier der Basis-kode mit dem ich gearbeitet hab, also da ist keine Switch Case sondern nur if s und die kleine Schleife fehlt ebenfalls
Code:
package ü17;
import java.util.Scanner;
public class SimpleCALC {
public static void main (String [] args) {
System.out.println("Hallo, wie ist ihr Name?");
Scanner N = new Scanner (System.in);
System.out.println("Hallo " + N.nextLine() + ", mein Name ist SimpleCalc.\nIch bin ein Taschenrechner der für Sie die Grundoperationen:\n Addition, Substraction, Multiplikation und die Division\nfür Sie ausrechnet.");
do {
System.out.println("Bitte geben Sie die Rechnung ein in folgendem Format:\n'Zahl''Leerzeichen''Rechenoperator''Leerzeichen''Zahl' :");
Scanner eingabe = new Scanner (System.in);
String enter = eingabe.nextLine();
String [] e = enter.split(" ");
double zahl1;
double zahl2;
zahl1 = Double.parseDouble (e[0]);
zahl2 = Double.parseDouble (e[2]);
if (e[1].equals("+")||e[1].equals("-")||e[1].equals("*")||e[1].equals("/")) {
if (e[1].equals("+")) {
double summe;
summe = zahl1+zahl2;
System.out.println(e[0] + e[1] + e[2] + " = " + summe);
}
if (e[1].equals("-")) {
double substrackt;
substrackt = zahl1-zahl2;
System.out.println(e[0] + e[1] + e[2] + " = " + substrackt);
}
if (e[1].equals("*")) {
double produkt;
produkt = zahl1*zahl2;
System.out.println(e[0] + e[1] + e[2] + " = " + produkt);
}
if (e[1].equals("/")) {
double dividukt;
dividukt = zahl1/zahl2;
System.out.println(e[0] + e[1] + e[2] + " = " + dividukt);
}
}
else {
System.out.println("Unzulässiges Zeichen als Rechenoperator");
}
System.out.println("Möchten Sie das Programm mit 'Y' beenden oder doch mit 'N' weiter arbeiten?");
char endlauf;
Scanner ende = new Scanner(System.in);
endlauf=ende.next().charAt(0);
if (endlauf!='N') {
if (endlauf == 'Y') {
break;
} else System.out.println("Falsches Zeichen, bitte wiederholen sie:");}
} while (true);
}
}
Code:
package ü17;
import java.util.Scanner;
public class simpleTEST {
public static void main (String [] args) {
System.out.println("Hallo, wie ist ihr Name?");
Scanner N = new Scanner (System.in);
System.out.println("Hallo " + N.nextLine() + ", mein Name ist SimpleCalc.\nIch bin ein Taschenrechner der für Sie die Grundoperationen:\n Addition '+', Substraction '-', Multiplikation '*' und die Division '/'\nfür Sie ausrechnet.");
do {
System.out.println("Bitte geben Sie die Rechnung ein in folgendem Format:\n'Zahl''Leerzeichen''Rechenoperator''Leerzeichen''Zahl' :");
Scanner eingabe = new Scanner (System.in);
String enter = eingabe.nextLine();
String [] e = enter.split(" ");
double zahl1;
double zahl2;
zahl1 = Double.parseDouble (e[0]);
zahl2 = Double.parseDouble (e[2]);
//[EDIT] ich hab die umwandlung versehentlich gelöscht aber ich glaub es war so: char operator = e.charAt(1); aber die Umwandlung will nicht richtig bei mir gehen und mit char operator;
operator = Char.parseChar (e[1]); kommt Fehler das Char. als Class nicht definiert ist.
switch (operator) { //Hier ist das Problem, das ich kein String für den Switch benutzen kann und wenn ich Char benutze, dann vergleicht er nicht mehr richtig also er gibt immer default raus
case '+': double summe;
summe = zahl1+zahl2;
System.out.println(e[0] + e[1] + e[2] + " = " + summe); break;
case '-': double substrackt;
substrackt = zahl1-zahl2;
System.out.println(e[0] + e[1] + e[2] + " = " + substrackt); break;
case '*': double produkt;
produkt = zahl1*zahl2;
System.out.println(e[0] + e[1] + e[2] + " = " + produkt); break;
case '/': double dividukt;
dividukt = zahl1/zahl2;
System.out.println(e[0] + e[1] + e[2] + " = " + dividukt); break;
default: System.out.println("Unzulässiges Zeichen als Rechenoperator");
}
System.out.println("Möchten Sie das Programm mit 'Y' beenden oder doch mit 'N' weiter arbeiten?");
do{
char endlauf;
Scanner ende = new Scanner(System.in);
endlauf=ende.next().charAt(0);
if (endlauf!='N') {
if (endlauf == 'Y') {
break;
} else System.out.println("Falsches Zeichen, bitte wiederholen sie:"); }
}while (false); // diese 2 kleinere Schleife soll dafür sorgen solange nicht Y oder N in richtiger Form eingegeben wurde, die Eingabe zu wiederholen, wenn Y soll das Programm beenden und bei N soll beim ersten do wieder einsetzen. Ohne diese kleine Schleife geht die große Schleife ohne Macken, aber die kleine lässt entweder das Programm immer laufen oder bricht immer ab.
} while (true);
}
}
Die Zahlen habe ich umgewandelt bekommen, aber ich weiß nicht warum er mir immer default ausgibt, selbst wenn die char einem case entsprechen.
Am Ende fragt das Programm ob es enden soll, bei Y einfach break; bei N nochmals durchlaufen und bei jeder anderen Eingabe soll die Auswahl Y/N erneut stattfinden -> also das while verursacht mir die Probleme bei true und false bei eingabe Y läuft es dennoch weiter wo es doch beendet sein sollte und bei true und N bricht er ab [soll er nicht] und bei false und N macht er die Schleife [soll er]
Zuletzt bearbeitet:

.