Taschenrechner in java (Variablentyp gesucht)?
Moin,
fange grad an mit einem Tutorial auf Youtube java zu lernen. Eine Aufgabe war es einen Taschenrechner zu bauen. Das war aber in dem Video ziemlich schlecht und ich dachte mir : " das kannst du besser".
Kurz gesagt wollte ich das man auswählen kann, ob man mal plus minus oder durch rechnet (konnte man in dem Video nicht). Jedoch will ich eine Variable, die das Operationszeichen speichern kann. Anscheinend geht int ja nicht.
Das ist der Code : beim Starten bekomme ich immer java: illegal start of expression
public class taschenrechner {
public static void main(String[] args) {
double zahl1, zahl2, ergebnis;
int Operationszeichen;
Scanner scanner = new Scanner(System.in);
System.out.println("erste Zahl?");
zahl1 = scanner.nextDouble();
System.out.println("Operationszeichen bitte?");
Operationszeichen = scanner.nextInt();
System.out.println("2te Zahl bitte");
zahl2 = scanner.nextDouble();
if (Operationszeichen = + ) {
ergebnis = zahl1 + zahl2;
System.out.println(ergebnis); }
else if (Operationszeichen = - ) {
ergebnis = zahl1 - zahl2;
System.out.println(ergebnis);
}
else if (Operationszeichen = * ) {
ergebnis = zahl1 * zahl2;
System.out.println(ergebnis);
}
else (Operationszeichen = / ) {
ergebnis = zahl1 / zahl2;
System.out.println(ergebnis);
}
}
}
Ich bekomme ausserdem in dem Code rot untertstrichene Stellen, aber keine Lösungsmöglickeit. https://prnt.sc/u6wazx
Danke schonmal im Vorraus
Eventuell ist ja ein falscher Variablentyp auch gar nicht der Fehler....
3 Antworten
- Du hast einen String, den du in einen int kloppen willst. ein "-" ist keine Zahl.
- Operationszeichen kannst du nur als String abfragen. Sowas in der Art:
if(operationszeichen.equals("-")) {
//Do something
}
Aaaaahh tut mir mega leid ich hab ausversehen nicht hilfreich geklickt 😞.
public class Taschenrechner { // Klassennamen immer groß.
public static void main(String[] args) {
double zahl1, zahl2, ergebnis;
String operationszeichen; // Variablennamen immer klein.
// Da das "Operationszeichen" keine Zahl ist,
// wird es in einem String gespeichert.
Scanner scanner = new Scanner(System.in);
System.out.println("erste Zahl?");
zahl1 = scanner.nextDouble();
System.out.println("Operationszeichen bitte?");
operationszeichen = scanner.next(); // Mit next kriegst du das nächste Wort
System.out.println("2te Zahl bitte");
zahl2 = scanner.nextDouble();
if (operationszeichen.equals("+") ) { // Strings werden immer mit .equals verglichen.
ergebnis = zahl1 + zahl2;
System.out.println(ergebnis); }
else if (operationszeichen.equals("-") ) {
ergebnis = zahl1 - zahl2;
System.out.println(ergebnis);
}
else if (operationszeichen.equals("*") ) {
ergebnis = zahl1 * zahl2;
System.out.println(ergebnis);
}
else if (operationszeichen.equals("/") ) { // wenn du eine Bedingung angeben willst,
// brauchst du immer ein if.
ergebnis = zahl1 / zahl2;
System.out.println(ergebnis);
} else { // Wenn du einfach alle anderen Optionen abfangen willst,
// nimmst du "else" ohne eine Bedingung.
System.out.println("Die Operation \"" + operationszeichen + "\" kenne ich nicht.");
}
}
}
So funktioniert der Code zwar, aber ist ziemlich unübersichtlich. So wäre es schon besser:
import java.util.Scanner;
public class Taschenrechner {
public static void main(String[] args) {
double zahl1, zahl2, ergebnis;
String operationszeichen;
Scanner scanner = new Scanner(System.in);
System.out.println("erste Zahl?");
zahl1 = scanner.nextDouble();
System.out.println("Operationszeichen bitte?");
operationszeichen = scanner.next();
System.out.println("2te Zahl bitte");
zahl2 = scanner.nextDouble();
if (operationszeichen.equals("+")) {
ergebnis = zahl1 + zahl2;
System.out.println(ergebnis);
} else if (operationszeichen.equals("-")) {
ergebnis = zahl1 - zahl2;
System.out.println(ergebnis);
} else if (operationszeichen.equals("*")) {
ergebnis = zahl1 * zahl2;
System.out.println(ergebnis);
} else if (operationszeichen.equals("/")) {
ergebnis = zahl1 / zahl2;
System.out.println(ergebnis);
} else {
System.out.println("Die Operation \"" + operationszeichen + "\" kenne ich nicht.");
}
}
}
Und so hätte ich es mit Java 8 gemacht:
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
double n1, n2, result;
String operator;
System.out.println("Erste Zahl?");
n1 = in.nextDouble();
System.out.println("Operator?");
operator = in.next();
System.out.println("Zweite Zahl?");
n2 = in.nextDouble();
switch (operator) {
case "+": result = n1 + n2; break;
case "-": result = n1 - n2; break;
case "*": result = n1 * n2; break;
case "/": result = n1 / n2; break;
default: throw new IllegalArgumentException("Der Operator \"" + operator + "\" ist nicht bekannt.");
}
System.out.println(result);
}
}
Ab Java 12 wurden außerdem die "switch expressions" eingeführt. Da könnte man das switch auch so bauen:
result = switch (operator) {
case "+" -> n1 + n2;
case "-" -> n1 - n2;
case "*" -> n1 * n2;
case "/" -> n1 / n2;
default -> throw new IllegalArgumentException("Der Operator \"" + operator + "\" ist nicht bekannt.");
}
Hey,
da du ja immer ganz genau ein Zeichen speichern möchtest (+, -, *, /), würde ich dir empfehlen einen "char" zu nutzen.
Mfg Jannick (L1nd)
Und bitte gewöhne dir direkt zu Anfang an, variablen kleinzuschreiben und vor allem auf englisch. Deine Outputs können natürlich auf jeder Sprache sein die du willst, aber der Code sollte englisch sein, lern das lieber auch direkt so
Und was du auch nicht vergessen darfst, chars vergleicht man wie folgt:
if (myChar == '*')
Wichtig ist hierbei, dass es ein einfaches Anführungszeichen ist!
Wie kann ich das auf der Tastatur schreiben?
Ich probiere es mal aus, Danke!