2016-11-29 118 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類似,第二個提示是「在所有正數之後輸入一個負數......」,這不太準確。如果說「在所有非負整數後輸入一個負整數...」會更準確......
  4. 最後,我猜這是要求您的程序只接受非負整數作爲有效輸入,但如果不是那麼你應該知道,說一個負整數是奇數還是偶數在數學上是有效的。
2

請考慮使用nextLine()而不是nextInt()以獲得更好的錯誤處理方案。

因爲nextInt()會嘗試讀取傳入的輸入。它會看到這個輸入不是一個整數,並且肯定會拋出異常。但是,輸入不被清除,它仍然存在。緩衝區中仍然會有"abcxyz"。因此,回到循環將導致它嘗試一遍又一遍地解析相同的"abcxyz"

使用nextLine()將至少清除緩衝區,以便您在錯誤之後讀取的下一個輸入將成爲輸入壞行之後的新輸入。