2016-11-29 148 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()将至少清除缓冲区,以便您在错误之后读取的下一个输入将成为输入坏行之后的新输入。