2012-04-01 73 views
1

为这些准则:
这个循环中的逻辑错误是什么?

编写一个循环,从标准输入中读取正整数,并在读取非正整数时终止。循环终止后,它会打印出来,并由一个空格和一行分开,读取所有偶数整数的总和以及所有奇数整数的总和。声明任何需要的变量。

假定变量stdin的可用性引用与标准输入关联的Scanner对象。

我写了这段代码,但它的硬件软件不会除了它由于逻辑错误。我似乎无法找到这里的逻辑错误。有人能指出它有什么问题吗?

int sumP=0; 
    int sumO=0; 
    Scanner stdin = new Scanner (System.in); 

    System.out.println("enter an odd or even number"); 

    while (stdin.nextInt() >= 0){ 
    if(stdin.nextInt()%2 == 0) 
     sumP+= stdin.nextInt(); 
    else 
     sumO += stdin.nextInt(); 
    } 
    System.out.println(sumP + " " + sumO); 

回答

7

您需要保存您读取的值,否则您将在while循环和添加中使用不同的值。

int n; 
while((n = stdin.readInt()) >= 0) { 
    // use the same value of n 
+0

找到谢谢你的帮助。 并感谢您的解释。 – gnawthatthingoffyourface 2012-04-01 20:09:50

+2

有时当你调用同样的方法时,你会得到同样的结果,但是对于流,你只需要获得下一个值。 – 2012-04-01 20:23:53

0

这个工作对myprogramminglab - Java的

int sum=0; 
boolean areMore = true; 
int negative; 
while (areMore) 
{ 
    int number = stdin.nextInt(); 
    if (number <= 0) 
    areMore = false; 
    else if (number %2 ==0) 
    sum = sum + number;  
else 
    negative = sum + number; 
}  
System.out.println(sum); 
0
int number = 1; 
while (stdin.hasNextInt() && number > 0) 
{ 
      number = stdin.nextInt(); 
      if (number % 2 == 0 && number > 0) 
         System.out.print(number + " "); 
} 

这个问题的答案和许多其他代码实验室练习,可以在Java Codelab Solutions