Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 循环运行时如何更新整数?_Java_Loops_While Loop - Fatal编程技术网

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

Java 循环运行时如何更新整数?,java,loops,while-loop,Java,Loops,While Loop,当我们在程序中输入0时,它应该停止运行循环并打印数字的平均值。当我运行程序并最初输入0时,程序退出。如果我先输入一个不为零的整数,然后输入0,程序将继续运行,我无法退出。我认为当用户输入一个新值时,该整数值需要更新,以使程序退出,并且总和正确 循环运行时如何更新整数值?我猜我应该在循环中改变或添加一些东西 import java.util.Scanner; public class Exercise05_01 { public static void main(String[] ar

当我们在程序中输入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");
            }
        }
    }
}
import java.util.Scanner;
公开课练习05_01{
公共静态void main(字符串[]args){
浮点数=0;
浮点数和=0;
float posCount=0;
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入正整数或负整数,输入0结束程序”);
int integer=input.nextInt();
while(整数!=0){
如果(整数>0){
posCount=+1;
总和=+整数;
}
if(整数<0){
负计数=+1;
总和=+整数;
}
浮点计数=负计数+posCount;
如果(整数==0){
System.out.println(“答案”);
}
}
}
}

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

    while (integer != 0) {
        integer = input.nextInt();
           .
           .
           .
这样,当循环运行时,每次迭代都会检查输入

我也不得不说这看起来像是一个可疑的家庭作业。。。特别是类名…

有两个问题

首先,当你在循环中时,你不会得到任何输入。这可以通过午餐盒之前提供的建议来解决

第二,这不是累积价值:

posCount = +1;
每次为
posCount
分配一个正1

您想要增加值

posCount++;
…或显式添加一个

posCount += 1;
正如他在回答中指出的,您需要从循环内部请求用户的输入,否则
integer
永远不会更改,也永远不会退出循环;您观察到的行为是程序永远运行

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

int integer = input.nextInt();
while(integer != 0){
    // Do stuff
    integer = input.nextInt();
}
但是,您的代码还有许多其他问题。首先,为什么要使用
float
s来存储计数器和求和值?为什么不使用
int
s

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

在这种情况下,
+
操作符是最简单的。这将强制您的有符号值为正,因此
+(-1)=1
。虽然这很有用,但这不是你想要发生的事情,也绝对不是你想要在求和时做的事情

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

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

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

您需要从循环内部请求输入。另外,那些分配给
posCount
negCount
sum
的任务并没有达到您认为的效果。也许您应该使用breakeword跳出while循环,我无法编辑此问题来格式化文本。。。。