2016-03-22 7 views
1

クイック概要:ユーザー入力とスキャナに問題がある

私は基本的なプログラムを実行して、ユーザーに「ドリームカー」をいくつ持ってほしいかを尋ねます。

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 

私は、彼らが自分の車を持っていると思いますどのように多くの扉をユーザーに促したとき、彼らは数2または4を入力するように、2つの選択肢があります。しかし、彼らは他の番号を入力する場合、彼らは戻って、どちらか入力することはできません。 2または4を入力します。最初の入力が2または4でなかった場合、ユーザーが正しい番号を入力できるようにするにはどうすればよいですか?

申し訳ありません漠然としていると、私は現在CSの学生ではないので、教科書を持っていません。自分で学習します。

答えて

1

これは1つの可能性です。 numbOfDoorは0に設定され、テストでは許容値ではないことがチェックされ、nextInt はループ内にあります。 breakステートメントは必要ありません。

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!"); 
    } 
} 

また、あなたが文を破る必要がある。ここ

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

を使用する場合があります。

0

問題の可能な解決策は次のとおりです。それは最も洗練されたソリューションではありませんが、あなたのコードからの言葉のほとんどです。この例から学ぶべき良い方法は、コードの堅牢性を高めるために、whileループを入力の周りに使用することです。

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() 
関連する問題