Java:如何无限输入数字,输入负数时停止,计算机平均值

时间:2015-09-02 06:22:43

标签: java input average

我正在尝试编写一个可能具有无限数量值的Java程序 - 一旦用户输入负数,程序就会停止,计算所有输入数字的平均值(不包括负数)和打印出输入的数量(再次,不是负数)以及平均值。

以下是我目前的代码。当我尝试运行程序时,它没有正确计算平均值,你必须输入几个连续的负数才能最终停止程序。

为了测试算术和程序的其余部分,我插入了一个语句,如果输入“负”字而不是负数,它将关闭程序。什么时候这样做,平均值和数量以及其他所有工作就像它所做的那样。基本上,当我尝试在负数后停止程序时,问题就开始发生了。

我是一名初学程序员,这让我疯狂了几个小时。任何帮助是极大的赞赏!

import java.util.*;
import java.lang.Math;
import java.io.IOException;
import java.io.InputStream;

public class Average
{
    public static void main(String[] args)
    {   
        Scanner numInput = new Scanner(System.in);

        double avg = 0.0;
        double count = 0.0;
        double sum = 0.0;

        System.out.println("Enter a series of numbers. Enter a negative number to quit.");

        while (numInput.hasNextDouble())
        {
            double negNum = numInput.nextDouble();
            if (negNum >= 0)
            {
                sum += numInput.nextDouble();
                count++;
                avg = sum/count;
            }
            else 
            {
                System.out.println("You entered " + count + " numbers averaging " + avg + ".");
                break;
            }
        }
    }
}

4 个答案:

答案 0 :(得分:1)

您应该使用:sum+=negNum;代替sum += numInput.nextDouble();

就像现在一样,你的程序读取一个数字,如果它不是负数,它会读取另一个数字并将其添加到sum

此外,您应该只在else块中计算一次平均值。

答案 1 :(得分:0)

您正在阅读一个新号码来计算sum

应该是

sum += negNum;

答案 2 :(得分:0)

您已收到用户在行中输入的号码:

double negNum = numInput.nextDouble();

您应该将此号码本身添加到sum,而不是再次拨打numInput.nextDouble()向用户请求其他号码。所以固定代码是:

public static void main(String[] args){
        Scanner numInput = new Scanner(System.in);

        double avg = 0.0;
        double count = 0.0;
        double sum = 0.0;

        System.out.println("Enter a series of numbers. Enter a negative number to quit.");

        while (numInput.hasNextDouble())
        {
            double negNum = numInput.nextDouble();
            if (negNum >= 0)
            {
                sum += negNum;
                count++;
                avg = sum/count;
            }
            else
            {
                System.out.println("You entered " + count + " numbers averaging " + avg + ".");
                break;
            }
        }
    }

示例运行

Enter a series of numbers. Enter a negative number to quit. 2 3 -1 You entered 2.0 numbers averaging 2.5.

答案 3 :(得分:0)

更改

function

sum += numInput.nextDouble(); // reading next value again