如何在循环运行时更新整数?

时间:2014-10-01 21:43:52

标签: java loops while-loop

当我们在程序中输入0时,它应该停止运行循环并打印数字的平均值。当我运行程序并最初输入0时,程序退出。如果我先输入一个非零的整数,然后输入0,程序将继续运行,我无法退出。我认为当用户输入程序的新值时,整数值需要更新退出,总和是正确的。

如何在循环运行时更新整数值?我应该在循环中改变或添加一些我猜的东西。

import java.util.Scanner;

public class Exercise05_01 {

    public static void main(String[] args){

        float negCount = 0;

        float sum = 0;

        float posCount = 0;

        Scanner input = new Scanner(System.in);

        System.out.println("Enter a positive or negative integer. Entering 0 ends program");

        int integer = input.nextInt();

        while (integer != 0) {
            if (integer > 0) {
                posCount = +1;
                sum = +integer;
            }
            if (integer < 0) {
                negCount = +1;
                sum = +integer;
            }

            float count = negCount + posCount;

            if (integer == 0) {
                System.out.println("The answer");
            }
        }
    }
}

3 个答案:

答案 0 :(得分:2)

两个问题。

首先,当你在循环中时,你没有得到任何输入。这可以通过Lunchbox早先提供的建议来解决。

其次,这不会累积价值:

posCount = +1;

每次都为posCount分配一个正数。

您想要增加值...

posCount++;

...或明确添加一个。

posCount += 1;

答案 1 :(得分:1)

我认为您需要添加在while循环中输入的行。

    while (integer != 0) {
        integer = input.nextInt();
           .
           .
           .

这样循环运行时,每次迭代都会检查输入是否仍然存在。

另外我不得不说这看起来很像家庭作业......特别是班级名字......

答案 2 :(得分:1)

正如Lunchbox在他的回答中指出的那样,你需要从循环内部请求用户输入,否则integer永远不会改变,你永远不会退出你的循环;你正在观察的行为是永远运行的程序。

最好的方法是午餐盒的建议:

int integer = input.nextInt();
while(integer != 0){
    // Do stuff
    integer = input.nextInt();
}

但是,您的代码还有许多其他问题。首先,为什么使用float来存储您的计数器和总和值?为什么不使用int s?

另一方面,您实际上从未实际增加这些值。正如Makoto在他的回答中指出的那样,行posCount = +1不是增量运算符。

在这种情况下,+运算符是unary plus operator。这样做会强制您的签名值为正,所以+(-1) == 1。虽然这很有用,但它并不是你想要发生的事情,而且它绝对并不是你想要做的事情。

相反,您希望执行以下三项操作之一:

posCount = posCount + 1;
posCount += 1;
posCount++;

这些都是等同的陈述。 ++运算符是后缀增量运算符,它将变量的值加1然后返回它(它稍微复杂一点,但你可以在你自己的时间读取它)。所以不要使用这种语法作为你的总和;使用另外两个中的一个。