0

以下代码在第一次运行时正确输出总和、平均值、正/负数的计数、所有数字的计数。因为它循环,因此,输出保留在控制台上,提示用户再次输入数字。此时,只有 sum 显示正确的输出,其他值加倍。请帮助我修复循环。谢谢!

public class Test {

    public static void main(String[] args) {
        long n; 
        int count=0;
        float average;
        int positive=0;
        int negative =0;


        Scanner in = new Scanner(System.in);

        do {

            System.out.print("Enter a positive or negative integers: ");
            n = in.nextLong();


            if (n == 0){
                System.out.println("Integers you've entered is invalid. Please re-launch the Program.");
            }
            else 
            {
                int sum=0;

                do
                {
                    //Find sum of the integers entered.
                    sum += n %10;
                    n /= 10;

                    //Count number of integers entered.
                    count++;

                    //Find average of the numbers
                    average = sum / count;

                    //Find a count of positive and negative numbers.
                    if(n < negative){
                        negative++;
                    }                                   
                    else{
                        positive++;
                    }

                } while (n != 0);

                n = sum;
                System.out.println("The Sum of the numbers: " + sum);
                System.out.println("The Average of the numbers: " + average);
                System.out.println("Positive numbers are: " + positive);
                System.out.println("Negative numbers are: " + negative);
                System.out.println("The count of all numbers: " +count);

            }

        } while(n != 0);

    }
}
4

2 回答 2

3

sum这是唯一正确输出的,这是有道理的。这是您初始化外循环每次迭代的唯一值。


count,positivenegative不会在每次迭代中重新初始化,因此当您开始外循环的下一次迭代时,它们将从打印的任何位置开始。

您可能希望在每次运行循环时再次初始化它们。

于 2013-09-16T19:28:47.240 回答
0

do while在第二次进入循环之前,您永远不会重新初始化变量。

所以

else 
{
   int sum=0;
   do
   {

应该

else 
{
    int sum=0;
    count=0;
    average=0.0f;
    positive=0;
    negative =0;
    do
    {
于 2013-09-16T19:31:18.593 回答