2016-11-29 45 views
0

このプログラムを正しく実行することができません。数字を入力しても何も起こりません。誰かが間違っているところを指摘できますか?偶数と奇数のカウント数

import java.util.Scanner; 

public class EvenOdd { 
    public static void main(String[] args) { 

    //Declare variables 
    int number; 
    int evenNumbers = 0; 
    int oddNumbers = 0; 
    String answer = " "; 

    //Create Scanner 
    Scanner input = new Scanner(System.in); 

    do { 

    //Prompt the user to enter a list of positive numbers with the last being a negative 
    System.out.println("Please enter a list of positive numbers separated by a space."); 
    System.out.println("(Enter a negative number after all positive numbers have been entered.)"); 

    //Read the users numbers 
    number = input.nextInt(); 

    //An if statement determing a number either even or odd 
    while (number >= 0) { 

     if (number % 2 == 0) { 

     evenNumbers++; 

     } else { 

     oddNumbers++; 

     }//end of else 

    //Read next number 
    number = input.nextInt(); 

    }//end of while 

    //Display total number of even and odd integers 
    System.out.println("The total number of even positive intergers is: " + evenNumbers); 
    System.out.println("The total number of odd positive integers is: " + oddNumbers); 

    //Ask the us if they would like to play again 
    System.out.println("Would you like to play again? Please type: 'yes' or 'no': "); 

    //Move scanner to next line 
    input.nextLine(); 

    //Read the users input 
    answer = input.nextLine(); 

    } while(answer.equalsIgnoreCase("yes")); //end of do-while 

    }//end of main 
}//end of class 
+2

'this program':プログラムはどこですか? – RyanZim

+1

ライン37が原因です –

+4

今日は宿題の数が多い新学期でなければなりません。 – epascarello

答えて

0

私はこのケースではあなたの期待が間違っていると思います。プログラムは、正の数をスペースで区切って入力し、その後に負の数を入力するように指示します。

while (number >= 0)

停止し、上に移動することをトリガする負の整数値を待って、実行を継続:私はあなたがおそらくループが理由である負の数を入力しなかった推測しています。あなたが対処することをお勧めします

いくつかのマイナーな問題:

  1. スペルの間違いであっても、整数の数を印刷する場合、単語「intergers」は「整数」
  2. 初期プロンプトする必要がありますあります実際に0が許され、整数だけが有効な入力であるときには、「正の数のリストを入力してください...」と言います。より正確に言えば、「非負整数」となるはずです
  3. #2と同様に、2番目のプロンプトは、「すべての正の数の後に負の数を入力してください...」と言っていますが、これはあまり正確ではありません。 「負以外の整数の後ろに負の整数を入力してください」と言うのはもっと正確でしょう。
  4. 最後に、プログラムでは有効でない整数だけを有効な入力として受け入れる必要があると推測していますが、そうでなければ、負の整数が奇数または偶数であると言うのは数学的に有効であることを知るべきです。
2

エラー処理のシナリオを改善するため、nextInt()の代わりにnextLine()を使用することを検討してください。

nextInt()は入力を読み込もうとします。この入力は整数ではなく、間違いなく例外がスローされます。しかし、入力がクリアされていない、それはまだそこにあります。バッファにはまだ"abcxyz"があります。だからループに戻って、それは同じ"abcxyz"を何度も解析しようとします。

nextLine()を使用すると、少なくともバッファをクリアするので、エラーが発生した後に読み取る次の入力は、入力した不良行の後の新しい入力になります。

関連する問題