2016-04-17 3 views
0

Ich versuche, ein sehr einfaches Spiel zu erstellen, in dem mehrere Spieler verschiedener Typen versuchen, eine Zahl in einem Bereich zu erraten. Ich habe eine Funktion gemacht, um eine Reihe von Spielern zu initialisieren, und ich habe switch-case dafür verwendet.Alle Fälle in Switch ausgeführt, während nur einer ausgeführt werden soll

Aus irgendeinem Grund, wenn ich eine Nummer, es geht über alle Fälle nach ihm, auch wenn es nicht genug Zellen in der Anordnung sind. Wenn zum Beispiel 2 eingegeben wird, wird der Wert für den Typ HUMAN, es wurden auch die Fälle für 3 und 4- und Spieler der Typen COMPUTER und GUMBLER erstellt. Hier

ist der Code:

String name; 
    int count = 0; 
    System.out.println("How many players will participate?"); 
    players = new Player[reader.nextByte()]; 
    for (Player player: players) 
    {  
     count++; 
     System.out.print("\n1)Name of the player: "); 
     name = reader.next(); 
     System.out.println("What will be its type? WRITE A NUMBER\n1- Monley\n2-Human\n3-Gumbler\n4-Computer"); 
     switch (reader.nextInt()) 
     { 
      case 1: 
       player = new Monkey (name, MAXIMUM, MINIMUM); 
       System.out.println("A moneky was created"); 
      case 2: 
       player = new Human (name); 
       System.out.println("A human was created"); 
      case 3: 
       player = new Gumbler (name, MAXIMUM, MINIMUM); 
       System.out.println("A gummbler was created"); 
      case 4: 
       player = new Computer (name, MAXIMUM, MINIMUM); 
       System.out.println("A computer was created"); 
     } 
    } 

MAXIMUM und MINIMUM sind die minimalen und maximalen Zahlen die Zahl erraten werden muss sein kann. Human, Monkey, Computer und Gumbler sind Klassen, die die ABSRACT-Klasse Player erweitern. players ist das Array von Spielern (vom Typ Player).

+0

Ich empfehle Ihnen, die Java-Tutorials auf der Oracle-Website zu lesen. Hier ist ein Beispiel https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

Antwort

5

Beenden Sie jeden Fall Block mit einem break.

+0

Die beste Lösung für diese Art von Problem ist es, als doppelt zu markieren. – Learner

2

Sie benötigen in jedem Fall eine break-Anweisung. Siehe switch in java tutorial

String name; 
    int count = 0; 
    System.out.println("How many players will participate?"); 
    players = new Player[reader.nextByte()]; 
    for (Player player: players) 
    {  
     count++; 
     System.out.print("\n1)Name of the player: "); 
     name = reader.next(); 
     System.out.println("What will be its type? WRITE A NUMBER\n1- Monley\n2-Human\n3-Gumbler\n4-Computer"); 
     switch (reader.nextInt()) 
     { 
      case 1: 
       player = new Monkey (name, MAXIMUM, MINIMUM); 
       System.out.println("A moneky was created"); 
       break; 
      case 2: 
       player = new Human (name); 
       System.out.println("A human was created"); 
       break; 
      case 3: 
       player = new Gumbler (name, MAXIMUM, MINIMUM); 
       System.out.println("A gummbler was created"); 
       break; 
      case 4: 
       player = new Computer (name, MAXIMUM, MINIMUM); 
       System.out.println("A computer was created"); 
     } 
    } 
Verwandte Themen