这个循环中的逻辑错误是什么?

时间:2012-04-01 19:56:01

标签: java loops

这些指南:

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

确定变量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);

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分: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); 

答案 2 :(得分: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

找到这个和许多其他代码实践练习的答案