switch - Problem

Luk10

Top Contributor
Hallo

Ich wollte mal switch ausprobieren und habe aber folgendes problem .. wenn ich die methode 3 mal aufrufe wird mir immer 0 ausgegeben ... was ist das falsch?

Java:
int zahl = 0;
        switch (zahl) {
            case 0: 
              System.out.println ("0");
              erntezahl++;
              break;
            case 1:
              System.out.println ("1");
              erntezahl++;
              break;
            case 2:
              System.out.println ("2");
              erntezahl++;
              break;
            case 3:
              System.out.println ("3");
              break;
            }
        }
    }
 

nickname

Bekanntes Mitglied
hi, wenn du der Variablen
Java:
int zahl = 0;
nichts anderes zuweisst, wird immer 0 aufgerufen. switch läuft bei dir nicht
durch, da du eine break-Anweisung stehen hast. Damit bricht es bei 0 ab. Schreib
doch mal
Java:
int zahl = 2;
, dann wirst du sehen was passiert. Oder lass doch mal alle break´s weg, dann hat switch
durchfall...

Besser so
Java:
public void ausgabe(int i){
int zahl = i;
        switch (zahl) {
            case 0: 
              System.out.println ("0");
              erntezahl++;
              break;
            case 1:
              System.out.println ("1");
              erntezahl++;
              break;
            case 2:
              System.out.println ("2");
              erntezahl++;
              break;
            case 3:
              System.out.println ("3");
              break;
            }
        }
ist natürlich nur auf bestimmte Zahlen festgelegt. Ist halt einfach nur einfach

gruß nickname
 

Leck0rkuchen

Mitglied
Hoi Leute hab da mal ein Problem.

Ich hab eine Aufgabe bekommen einen einfachen "Ticketautomaten" zu schreiben. Bin recht lang dran gesessen weil ich nicht wusste ob ich switch oder if - else if - else "falsch verwendet habe".
Das Programm ist fertig und funktioniert auch, aber es sieht echt umständlich aus obwohl die Aufgabe einfach scheint. Nun will ich fragen ob ich das besser hätte machen können.

Der Code:
Java:
public class Ticket 
{
	public static void main(String[] args)
	{
		System.out.println("1 = Einzelfahrkarte, 2 = Wochenkarte, 3 = Monatskarte.");
		System.out.println("Welchen Kartentyp möchten Sie: ");
		int karte = Eingabe.IntZahl();
		System.out.println("Wählen Sie 1 oder 2 Zonen: ");
		int zone = Eingabe.IntZahl();
		String kartenTyp = "";
		String zoneTyp = "";
		double preis = 1.80;
		
		switch (karte)
		{
		case 1: kartenTyp = "Einzelfahrkarte"; break;
		case 2: kartenTyp = "Wochenkarte"; break;
		case 3: kartenTyp = "Monatskarte"; break;
		default: System.out.println("FEHLER");
		}
		switch (zone)
		{
		case 1: zoneTyp = "Kurzstrecke"; break;
		case 2: zoneTyp = "Normalstrecke"; break;
		default: System.out.println("FEHLER");
		}
		
		if ((karte == 1) && (zone == 1))
		{
			System.out.println(kartenTyp + " " + zoneTyp + ": " + preis+" €");
		}
		else if ((karte == 1) && (zone == 2))
		{	
			System.out.println(kartenTyp + " " + zoneTyp + ": " + preis*2+" €");
		}
		else if ((karte == 2) && (zone == 1))
		{
			System.out.println(kartenTyp + " " + zoneTyp + ": " + preis*7+" €");
		}
		else if ((karte == 2) && (zone == 2))
		{
			System.out.println(kartenTyp + " " + zoneTyp + ": " + (preis*2)*7+" €");
		}
		else if ((karte == 3) && (zone == 1))
		{
			System.out.println(kartenTyp + " " + zoneTyp + ": " + preis*30+" €");
		}
		else System.out.println(kartenTyp + " " + zoneTyp + ": " + (preis*2)*30+" €");
	}
}


Nur so zur belustigung, die Auflösung vom Buch :lol:

Java:
class Ticket
{
  public static void main(String[] args)
  {
    int region = 1;
    int art = 2;
    double price = 0.0;

    if ((region == 1) || (region == 2))
    {
      if (region == 1)
      {
        price = 2.00;
      }
      else
      {
        price = 2.80;
      }
      switch (art)
      {
        case 1:  System.out.println(price);
                 break;
        case 2:  System.out.println(price * 7);
                 break;
        case 3:  System.out.println(price * 30);
                 break;
        default: System.out.println("falsche Fahrkartenart" );
      }
    }
    else
    {
      System.out.println("falsche Tarifzone");
    }
  }
}

PS: Mir wurde erst später klar das ich keine Eingaben gebraucht hätte LOL
 
S

SlaterB

Gast
was ist an der Buch-Lösung belustigend, die ist doch teils deutlich besser

durch den Block
Java:
     if (region == 1)
      {
        price = 2.00;
      }
      else
      {
        price = 2.80;
      }
wird z.B. für alle drei arten der Grundpreis bestimmt während du dafür mehr einzelne ifs brauchst
 

Sonecc

Gesperrter Benutzer
Finde auch nichts belustigend an der Lösung.
Nur mal als Beispiel, dort werden gerade mal 5 Vergleiche im Worst Case durchgeführt.
Bei dir sind es im Worst Case aber 9.

Zu viele Switch-Case bzw. zu viele If-Abfragen, für zu wenige Daten
 

Landei

Top Contributor
Finde ich auch. Man bekommt das natürlich auch kürzer:
Java:
  public static void main(String[] args)
  {
    int region = 1;
    int art = 2;
    if ((region == 1) || (region == 2)) {
      double price = (region == 1) ? 2.00 : 2.80;
      if (art < 1 || art > 3) {
        System.out.println("falsche Tarifzone");
      } else {
        System.out.println(price * new int[]{1,7,30}[art-1]);
      }  
    } else {
      System.out.println("falsche Tarifzone");
    }
  }
}
 

Leck0rkuchen

Mitglied
Lustig war hier als Selbstkritik zu verstehen.
Lustig finde ich das weil ich nicht wusste das ich keine Eingaben benötige, natürlich ist die Buchlösung total logisch, und ich so umständlich viel geschrieben habe weil ich das Programm "eingabe-fähig" machen wollte. Sprich wenn ich kompiliere und starte nicht nur "Fakten" rauskommen sondern ich gefragt werde welche karte ich will, und welche Zone.


BTW: Wie könnte ich nun MEIN code verbessern? Ich nehme an das zB:
Java:
case 1: zoneTyp = "Kurzstrecke"; break;
case 2: zoneTyp = "Normalstrecke"; break;
default: System.out.println("FEHLER");
nicht als Switch ausgeführt werden müsste, nur weiß ich nicht wie ich das mit if-else machn könnte.
 
Zuletzt bearbeitet:

Sonecc

Gesperrter Benutzer
Java:
if (karte == 1) {
    kartenTyp = "Einzelfahrkarte";
} else if (karte == 2) {
   kartenTyp = (...)

usw.

Alle Switch-Case Fälle können in äquivalente If-Else Abfragen umgeformt werden.
Ist aber nicht immer sinnvoll.

Dein Problem ist auch nicht, dass du eine Eingabe ermöglichen wolltest, denn die Musterlösung wäre auch mit Eingabe nicht anders.
Man braucht schlicht nicht mehr Abfragen, als in der Lösung
 
S

SlaterB

Gast
@Leck0rkuchen
nein, ein solches switch kann man mit einfachen Mitteln nicht besser machen,
nur könntest du in diesem switch gleich noch den Preis mit setzen

Java:
case 1: zoneTyp = "Kurzstrecke"; break;
case 2: zoneTyp = "Normalstrecke"; preis *= 2; break;
dann kannst du dir alle if/ else am Ende sparen,
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
F Switch Case Problem mit Regex lösen? Java Basics - Anfänger-Themen 6
B Problem bei switch statement Java Basics - Anfänger-Themen 4
D Klassen Problem bei switch-case? Java Basics - Anfänger-Themen 2
T kleines problem mit switch case Java Basics - Anfänger-Themen 11
F Ps to kW Konvertierer switch-case Problem Java Basics - Anfänger-Themen 4
A Switch-Case Problem Java Basics - Anfänger-Themen 17
berti99 Switch-Case || Problem... Java Basics - Anfänger-Themen 6
P Problem mit switch-Funktion Java Basics - Anfänger-Themen 5
M char und switch Problem Java Basics - Anfänger-Themen 4
M Problem mit ActionListener , switch-Anweisung und Objekt Java Basics - Anfänger-Themen 2
F Ein switch Problem Java Basics - Anfänger-Themen 6
C Switch / Case Problem, break funktioniert nicht! Java Basics - Anfänger-Themen 3
T Problem mit der Logik von Switch und do-while Java Basics - Anfänger-Themen 3
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
A switch statement Java Basics - Anfänger-Themen 4
volcanos enum und switch (neu): falschen Wert mit IllegalArgumentException oder mit EnumConstantNotPresentException abfangen ? Java Basics - Anfänger-Themen 51
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
Lion.King switch-Befehl Java Basics - Anfänger-Themen 6
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
P9cman Vokal Zähler mit switch case und for-Schleife Java Basics - Anfänger-Themen 4
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
C if-Konstrukt durch switch-Konstrukt ersetzen Java Basics - Anfänger-Themen 14
1 Switch Case Java Basics - Anfänger-Themen 3
T Alternative für switch case Java Basics - Anfänger-Themen 1
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
W Taschenrechner mit Switch case Java Basics - Anfänger-Themen 4
B Notensystem Switch-Case Java Basics - Anfänger-Themen 31
S Switch-Case zur Berechnung der Einkommensteuer Java Basics - Anfänger-Themen 15
F Switch case wird als char nicht erkannt.... Java Basics - Anfänger-Themen 6
V Switch Methode macht Code kaputt Java Basics - Anfänger-Themen 18
H Frage zur if-Bedingung bzw switch case Java Basics - Anfänger-Themen 6
S switch case fängt beim letzten case an Java Basics - Anfänger-Themen 6
J Parameterübergabe in switch? Java Basics - Anfänger-Themen 2
M Switch Java Basics - Anfänger-Themen 2
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
F Switch Case Modulo berechnen Java Basics - Anfänger-Themen 12
F Erste Schritte Frage zu simplem Taschenrechner(switch) Java Basics - Anfänger-Themen 16
NoMercy BitFlags Programm (switch on/off , swap und isSet) Java Basics - Anfänger-Themen 7
S Switch-Case für eine Array-Zuordnung Java Basics - Anfänger-Themen 5
S switch und case Java Basics - Anfänger-Themen 1
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
E Input/Output Switch ausgabe anpassen bzw. anders darstellen Java Basics - Anfänger-Themen 13
A Warum funktioniert switch aber nicht if/else? Java Basics - Anfänger-Themen 23
B Wiederholen einer if/switch-case Schleife Java Basics - Anfänger-Themen 9
X Nach switch case weiter mit Auswahl Java Basics - Anfänger-Themen 7
T switch case und continue Java Basics - Anfänger-Themen 5
D switch case Code Java Basics - Anfänger-Themen 3
K Erste Schritte switch - Warum sind long/float/double/... nicht erlaubt? Java Basics - Anfänger-Themen 5
Ponychan95 Erste Schritte Switch fällt immer bis zum default durch Java Basics - Anfänger-Themen 4
P Bei Switch-Anweisung wird default-Anweisung angezeigt Java Basics - Anfänger-Themen 4
D kleiner Taschenrechner mit switch fehlerhaft Java Basics - Anfänger-Themen 1
O This in switch anweisung Java Basics - Anfänger-Themen 5
V Fehlerhafte BufferedReader/switch Benutzung? Java Basics - Anfänger-Themen 2
F Erste Schritte Switch case vs. Verschachtelte If Anweisung Java Basics - Anfänger-Themen 11
K Variablen RETURN in Case-Switch / This method must return a result of type Item Java Basics - Anfänger-Themen 4
R Methoden Switch wählt das Falsche Java Basics - Anfänger-Themen 17
B Erste Schritte Addition von double in switch-Anweisung Java Basics - Anfänger-Themen 2
M Endlosschleife bricht durch switch ab Java Basics - Anfänger-Themen 17
R Switch: Nach durchlaufen des Case wieder zum Menü Java Basics - Anfänger-Themen 3
D Array in switch Java Basics - Anfänger-Themen 3
A Switch Case Java Basics - Anfänger-Themen 5
Devil0s if vs. switch Java Basics - Anfänger-Themen 27
F Reset in der switch Anweisung Java Basics - Anfänger-Themen 3
R Compiler-Fehler Auf selben Array in mehreren "cases" vom "Switch" zugreifen Java Basics - Anfänger-Themen 11
R Switch Werte außerhalb verwenden Java Basics - Anfänger-Themen 2
D Eine Variable in mehreren "switch" Java Basics - Anfänger-Themen 24
M Switch mit String Java Basics - Anfänger-Themen 20
T Erste Schritte switch case Anweisung und if else Verzweigungen? Java Basics - Anfänger-Themen 6
M Variablen Switch Bedingungen Java Basics - Anfänger-Themen 12
A ArrayList-iteration mit Prüfung auf instanceof durch switch case? Java Basics - Anfänger-Themen 13
P Switch Case - Fließkommazahl Java Basics - Anfänger-Themen 2
Z Switch umsetzung Java Basics - Anfänger-Themen 6
lulas[]args Fehlerhafte Switch Java Basics - Anfänger-Themen 6
lulas[]args Switch Schleife - orphaned case Java Basics - Anfänger-Themen 27
W "switch" Anweisung - Rechenzeichen? Java Basics - Anfänger-Themen 5
I Methoden Wochenkalendar switch anweisung fehlt Java Basics - Anfänger-Themen 4
C Switch Anweisung Frage Java Basics - Anfänger-Themen 8
R Switch/Case frage: Java Basics - Anfänger-Themen 12
Luk10 Frage zu Switch-Anweisung Java Basics - Anfänger-Themen 11
C Erste Schritte switch Anweisung geht nicht Java Basics - Anfänger-Themen 3
R Switch Abfrage: Found boolean but expected int? Java Basics - Anfänger-Themen 7
T Umschreiben von switch in if else und umgekehrt Java Basics - Anfänger-Themen 9
K Input/Output switch case - Parameterübergabe args[0] Java Basics - Anfänger-Themen 34
P Compilerfehler bei switch-case Java Basics - Anfänger-Themen 18
R 3 Datumsangaben sortieren mittels Switch Java Basics - Anfänger-Themen 9
J Switch mit if anweisung kombinieren Java Basics - Anfänger-Themen 2
D Kann man eine for-Schleife mit switch kombinieren? Java Basics - Anfänger-Themen 8
D Switch und Case Java Basics - Anfänger-Themen 3
F Datentypen Ganz simpler Taschenrechner mit switch Java Basics - Anfänger-Themen 10
M '-1' in switch anweisung Java Basics - Anfänger-Themen 2
T Parser mit switch "Weg" ausgeben? Java Basics - Anfänger-Themen 5
Q switch case hier möglich Java Basics - Anfänger-Themen 10
A Do While mit Switch Case Java Basics - Anfänger-Themen 2
S char im switch Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben