2016-03-22 16 views
1

Schnellübersicht:Probleme mit Benutzereingabe und Scanner

Ich mache ein grundlegendes Programm, das den Benutzer fragt, wie viele Türen sie ihr "Traumauto" haben sollen.

public static void main(String [ ] args){ 


CarSim carSimUser1 = new CarSim(); 



System.out.println("Hello, and welcome to Car Matcher!"); 

Scanner scanName = new Scanner(System.in); // user input for name 

System.out.println("What's your name?"); 
String userName = scanName.nextLine(); 

System.out.println("Hello " + userName); 
System.out.println("So you are looking for a new Car?"); 
System.out.println("Would you like 4 door sedan"); 
System.out.println("Or a two door coupe?"); 
System.out.println("Enter a number only!"); 



Scanner scanDoor = new Scanner(System.in); // user input for number of doors 
int numbOfDoor = scanDoor.nextInt(); 



while(numbOfDoor <= 4){ 

    if(numbOfDoor == 4){ 
     System.out.println("Okay, so you want " + numbOfDoor); 

    } 


    else if(numbOfDoor == 2){ 

     System.out.println("Okay, so you want " + numbOfDoor); 
break; 
    } 

    else{ 
     System.out.println("Select either 2 or 4 doors!"); 
     break; 
} 

enter code here 

Wenn ich den Benutzer auffordern, wie viele Türen sie ihr Auto haben wollen, sie haben nur zwei Möglichkeiten, die Nummer 2 oder 4 einzugeben Aber wenn sie eine andere Zahl eingeben können sie gehen nicht zurück und geben Sie entweder 2 oder 4. Wie kann ich mein Programm bekommen, damit der Benutzer die richtige Nummer eingeben kann, wenn seine Eingabe nicht 2 oder 4 war?

Sorry, wenn vage, ich habe kein Lehrbuch, weil ich zurzeit kein CS-Student bin, der alleine lernt.

Antwort

1

Dies ist eine Möglichkeit. Beachten Sie, dass numbOfDoor auf 0 gesetzt ist, der Test überprüft, dass es keiner der zulässigen Werte ist, und dass die nextInt innerhalb der Schleife ist. Es ist nicht notwendig, Break-Anweisungen zu haben.

int numbOfDoor = 0; 
while(numbOfDoor != 2 && numbOfDoor != 4){ 
    numbOfDoor = scanDoor.nextInt(); 
    if(numbOfDoor == 4){ 
     System.out.println("Okay, so you want " + numbOfDoor); 
    } else if(numbOfDoor == 2){ 
     System.out.println("Okay, so you want " + numbOfDoor);  
    } else{ 
     System.out.println("Select either 2 or 4 doors!"); 
    } 
} 

könnten Sie auch

int numbOfDoor = 0; 
while(true){ 
    numbOfDoor = scanDoor.nextInt(); 
    if(numbOfDoor == 4){ 
     System.out.println("Okay, so you want " + numbOfDoor); 
     break; 
    } 
    // More if + println + break 
} 

Hier verwenden Sie Anweisungen brechen müssen.

0

Eine mögliche Lösung für die Frage kann wie folgt aussehen. Es ist nicht die eleganteste Lösung, aber es ist fast Wort für Wort aus Ihrem Code. Ein guter Trick, um aus diesem Beispiel zu lernen, wäre, While-Schleifen um Ihre Eingaben zu verwenden, um die Robustheit Ihres Codes zu erhöhen.

int numbOfDoor = scanDoor.nextInt(); 
    while (numbOfDoor != 2 || numbOfDoor != 4) 
    { 
     System.out.print("Invalid choice, try again: "); 
     numbOfDoor = scanDoor.nextInt(); 

     if (numbOfDoor == 2 || numbOfDoor == 4) 
      break; 

    } 

    if(numbOfDoor == 4) 
    { 
     System.out.println("Okay, so you want " + numbOfDoor); 

    } 


    else if(numbOfDoor == 2) 
    { 
     System.out.println("Okay, so you want " + numbOfDoor); 
    } 

    else 
    { 
     System.out.println("Select either 2 or 4 doors!"); 

    } 
scanDoor.close()