2017-06-04 474 views
-3

我有一个读取整数列表的程序,然后显示偶数和奇数的数量。我们假设输入以0结束。下面是该程序的示例运行。在java数组中计算偶数和奇数的数字

输入数字:1 2 3 4 5 6 7 8 9 0

奇数:5均匀:4

然而,我的结果是 奇:5和偶数:5.

的问题是0被计为偶数。这是我的代码

public class Q75 { 
    public static void main(String[] args){ 
     java.util.Scanner input = new java.util.Scanner (System.in); 
     double [] numbers = new double[10]; 
     System.out.print("Enter numbers: "); 
     for(int i = 0;i<numbers.length;i++){ 
      numbers[i] = input.nextDouble(); 
     } 

     int Evens = 0; 
     int Odd = 0; 

     for(int i = 0;i<numbers.length;i++){ 
      if(numbers[i]%2 == 0){ 
       Evens++; 
      }else{ 
       Odd++; 
      } 
     } 
     System.out.println("The number of odd numbers: " + Odd); 
     System.out.println("The number of even numbers: " + Evens); 
    } 

} 
+0

的JavaScript =/= java的 –

+1

*我应该怎么解决*解决什么? – shmosel

+0

虽然我不喜欢使用'Scanner#nextDouble()',并且宁愿使用'Scanner#nextLine()',您从未告诉我们问题出在哪里。 –

回答

1

有两个选项

A)中添加另一个分支的if语句,即

if(number[i] > 0) { 
    if(number[i] % 2 >0) 
     Odd++; 
    else 
     Evens++; 
} 

注意:改变else分支到else if(number[i] >0),你可以不办外部如果条件。

B)由于编号列表以0结尾,你可以把这个作为条件你的for循环即

for(int i =0; i < numbers.length && numbers[i] > 0 ; i++) 

而且根据经验变量名在Java中开始用小字母的规则

0

只是不检查的最后一个元素:使用i < numbers.length - 1

for(int i = 0;i < numbers.length - 1; i++) { 
     // 
} 
+0

这要求你知道0在最后一个元素(以及其他地方)。我建议你至少检查一下假设。 –

+0

是的。该计划如此说。它仍然会考虑数组中间的任何0。 –