Ich habe hier einen Taschenrechner geschrieben, aber wenn ich in die Konsole bei Rechenart "Addition" eingebe, wird mir trotzdem das else angezeigt.
Code:
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args)
{
Scanner a = new Scanner(System.in);
System.out.println("Geben sie bitte nun die erste Zahl ein");
double ersteZahl = a.nextDouble();
System.out.println("Geben sie bitte nun die zweite Zahl ein");
double zweiteZahl = a.nextDouble();
System.out.println("Geben sie nun die Rechenart an (Addition,Subtraktion,Division,Multiplikation");
String wd = a.next();
if (wd.equals("Addition"))
{
double ergebnis;
ergebnis = ersteZahl + zweiteZahl;
System.out.println(ergebnis);
}
if (wd.equals("Subtraktion"))
{
double ergebnis1;
ergebnis1 = ersteZahl - zweiteZahl;
System.out.println(ergebnis1);
}
if (wd.equals("Multiplikation"))
{
double ergebnis2;
ergebnis2 = ersteZahl*zweiteZahl;
System.out.println(ergebnis2);
}
if (wd.equals("Division"))
{
double ergebnis3;
ergebnis3 = ersteZahl/zweiteZahl;
System.out.println(ergebnis3);
}
else
{
System.out.println("Du hast entweder keine der vorgegebenen Rechenarten gewählt, oder diese falsch geschrieben");
}}
}
1.) Du benutzt kein Else-If, Sondern nur eine Reihe von "ifs"
2.) Benutz besser Switch und Case.
Beispiel für Else if:
Java:
publicstaticvoidmain(String[] args){Scanner a =newScanner(System.in);System.out.println("Geben sie bitte nun die erste Zahl ein");double ersteZahl = a.nextDouble();System.out.println("Geben sie bitte nun die zweite Zahl ein");double zweiteZahl = a.nextDouble();System.out.println("Geben sie nun die Rechenart an (Addition,Subtraktion,Division,Multiplikation");String wd = a.next();if(wd.equals("Addition")){System.out.println(ersteZahl + zweiteZahl);}elseif(wd.equals("Subtraktion")){System.out.println(ersteZahl - zweiteZahl);}elseif(wd.equals("Multiplikation")){System.out.println(ersteZahl * zweiteZahl);}elseif(wd.equals("Division")){System.out.println(ersteZahl / zweiteZahl);}else{System.out.println("Du hast entweder keine der vorgegebenen Rechenarten gewählt, oder diese falsch geschrieben");}}
Beispiel für Switch&Case:
Java:
publicstaticvoidmain(String[] args){Scanner a =newScanner(System.in);System.out.println("Geben sie bitte nun die erste Zahl ein");double ersteZahl = a.nextDouble();System.out.println("Geben sie bitte nun die zweite Zahl ein");double zweiteZahl = a.nextDouble();System.out.println("Geben sie nun die Rechenart an (Addition,Subtraktion,Division,Multiplikation");String wd = a.next();double ergebnis =0;switch(wd){case"Addition":
ergebnis = ersteZahl + zweiteZahl;break;case"Subtraktion":
ergebnis = ersteZahl - zweiteZahl;break;case"Multiplikation":
ergebnis = ersteZahl * zweiteZahl;break;case"Division":
ergebnis = ersteZahl / zweiteZahl;break;default:System.out
.println("Du hast entweder keine der vorgegebenen Rechenarten gewählt, oder diese falsch geschrieben");break;}System.out.println(ergebnis);}
if( bedingung ){// tue irgendwas }if( andere_bedingung ){// tue was anderes }if( noch_eine_bedingung ){// tue was ganz anderes}else{// tue sonst was }
So wirkt sich das ELSE nur auf if( noch_eine_bedingung ) aus.
Es werden also alle drei IF-Bedigungen geprüft und ggf. die zugehörige Aktion innerhalb der geschweiften Klammern aufgerufen!
Aber auch wenn bedingung erfüllt ist und "tue irgendwas" ausgeführt wurde, werden die beiden nachfolgenden IF's geprüft.
Da ja vermutlich bei Dir nur eine der drei Bedingungen erfüllt ist, läuft das Programm zwangsläufig in den ELSE-Fall, da ja die erste erfüllt ist, die dritte aber nicht!
Ich hoffe, das war irgendwie verständlich
Gruß Klaus
Alternativ kannst du Zeilen mit "return;" einbauen.
Beispiel:
Java:
packagecom.company;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){Scanner a =newScanner(System.in);System.out.println("Geben sie bitte nun die erste Zahl ein");double ersteZahl = a.nextDouble();System.out.println("Geben sie bitte nun die zweite Zahl ein");double zweiteZahl = a.nextDouble();System.out.println("Geben sie nun die Rechenart an (Addition,Subtraktion,Division,Multiplikation");String wd = a.next();if(wd.equals("Addition")){double ergebnis;
ergebnis = ersteZahl + zweiteZahl;System.out.println(ergebnis);return;}if(wd.equals("Subtraktion")){double ergebnis1;
ergebnis1 = ersteZahl - zweiteZahl;System.out.println(ergebnis1);return;}if(wd.equals("Multiplikation")){double ergebnis2;
ergebnis2 = ersteZahl * zweiteZahl;System.out.println(ergebnis2);return;}if(wd.equals("Division")){double ergebnis3;
ergebnis3 = ersteZahl / zweiteZahl;System.out.println(ergebnis3);return;}else{System.out.println("Du hast entweder keine der vorgegebenen Rechenarten gewählt, oder diese falsch geschrieben");return;}}}