Findet ihr den Taschenrechner gut?
Hey ich habe gerade einfach spontan nach paar Videos Java lernen zum ersten mal mein eigenes Programm erstellen wollen und hab mal versucht einen Taschenrechner der + - / * ausführen kann zu machen, findet ihr den Code ok?
import java.util.Scanner;
public class Calc {
public static void main (String[] args){
Scanner scan = new Scanner(System.in);
int zahl;
int operation;
int zahl2;
int ergebnis = 0;
int wiederholung = 1;
while (wiederholung == 1) {
System.out.println("Tippen sie eine Zahl ein");
zahl = scan.nextInt();
System.out.println("Welche Operation möchten sie durchführen? - (0) + (1) / (2) * (3)");
operation = scan.nextInt();
if (operation == 0) {
System.out.println("Mit welcher Zahl möchten sie subtrahieren?");
} else if (operation == 1) {
System.out.println("Mit welcher Zahl möchten sie addieren?");
} else if (operation == 2) {
System.out.println("Mit welcher Zahl möchten sie dividieren?");
} else if (operation == 3) {
System.out.println("Mit welcher Zahl möchten sie multiplizieren?");
}
zahl2 = scan.nextInt();
if (operation == 0) {
ergebnis = zahl - zahl2;
} else if (operation == 1) {
ergebnis = zahl + zahl2;
} else if (operation == 2) {
ergebnis = zahl / zahl2;
} else if (operation == 3) {
ergebnis = zahl * zahl2;
}
System.out.println("Hier ist ihr Ergebnis: " + ergebnis + " ...möchten sie weitere Berechnungen durchführen? ja (1) nein (2)");
wiederholung = scan.nextInt();
if (wiederholung == 2) {
System.out.println("Programm wird beendet");
break;
} else if (wiederholung == 1) {
System.out.println("Super!");
}
}
2 Antworten
Es ist gut, dass du sinnvolle Bezeichner wählst. Nichtsdestotrotz gibt es noch Verbesserungspotenzial, unter anderem hinsichtlich der Funktionalität.
Folgend verschiedene Tipps:
- Bleibe bei deinen Bezeichnern ganz konsequent einheitlich (z.B. Rechner statt Calc, scanner statt scan).
- Die Wiederholungen würde ich über eine do-while-Schleife steuern. Als Bedingung kannst du wie gehabt prüfen, ob der Nutzer eine 1 oder 2 eingibt.
- Eine Division durch 0 sollte nicht möglich sein.
- Invalide Operationen (z.B. die Eingabe von -1 oder 4) sind noch unbehandelt. Es wäre gut, in dem Fall eine Fehlermeldung auszugeben und die Schleife neu zu starten (continue).
- Die Variablen zahl und zahl2 würde ich innerhalb der Schleife erstellen, da sie nur in der Schleife gebraucht werden. Deklaration und Definition kann man dafür auch zusammenfassen.
- Mehrmaliger Rechtschreibfehler: Die Höflichkeitsform Sie wird mit einem großen S geschrieben, andernfalls handelt es sich um den Plural.
- Für die Prüfung der Operation kannst du ruhig mit einem char/String arbeiten.
- Ich persönlich würde statt if-else if ein switch-Konstrukt verwenden. Wenn du bezüglich Operationen bei der Eingabe einer Ganzzahl zwischen 0-3 (Grenzen inklusiv) bleibst, könntest du den ersten Prüfblock via Array kürzen (s. u.).
String[] operationsVerben = new String[] { "subtrahieren", "addieren", "dividieren", "multiplizieren" };
System.out.printf("Mit welcher Zahl möchten Sie %s?%n", operationsVerben[operation]);
Habe so manches wie switch und do while noch nicht gelernt danke
Joa er ist nicht schlecht.
Der code funktioniert, das einzige Problem sind die Konventionen.
Statt den if und else if könnte man ein case machen
Und normalerweise macht man ein while(true), und schreibt system.exit() wenn das Programm beendet werden soll. (Wenn danach nix mehr kommt)
Das ist nur wie man es schreiben “sollte“, der code funktioniert aber auch so.