试图找到在Java中输入的数字的最小值

时间:2017-09-06 02:26:34

标签: java

所以这个程序应该可以读取任意数量的数字,并得出平均值,总数和最小值/最大值。输入数字并且一旦输入0就停止循环(0不计入最小值/总计等)我被卡在最小值上。我知道它不应该被硬编码为0,但我怎么设置它以获取循环中的最低值?

public class Main {
public static void main(String[] args)
{
    double sum = 0, maxVal = 0,minVal = 0, average = 0, number;
    int count = 0;
    Scanner input = new Scanner(System.in);

    while((number = input.nextDouble()) != 0)
    {
        sum += number;
        count++;
        if(number < minVal)
        {
            minVal = number;
        }
        if(number > maxVal)
        {
            maxVal = number;
        }
    }
    average = sum / count;
    System.out.println("Total Count: " + count);
    System.out.println("Sum: " + sum);
    System.out.println("Mean: " + average);
    System.out.println("Max Value: " + maxVal);
    System.out.println("Min Value: " + minVal);
}

}

2 个答案:

答案 0 :(得分:1)

您将minmax初始化为零,然后与用户输入进行比较,除非值为正数,否则您不会设置max(或设置为min为负数)。更改初始值,如

double sum = 0, maxVal = Double.NEGATIVE_INFINITY,
        minVal = Double.POSITIVE_INFINITY, average = 0, number;

而不是同时设置为0

答案 1 :(得分:0)

您可以使用第一个输入的数字初始化minValmaxVal,然后才开始循环。

double sum = 0, maxVal, minVal, average = 0, number;
int count = 0;
Scanner input = new Scanner(System.in);

maxVal = minVal = number = input.nextDouble();
while(number != 0) {
    ...
    number = input.nextDouble())
}

这是一本“经典”教科书解决方案。