Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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 - Fatal编程技术网

尝试查找Java中输入的数字的最小值

尝试查找Java中输入的数字的最小值,java,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; S

因此,该程序应该能够读取任意数量的数字,并输出平均值、总数和最小/最大值。输入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);
}
公共类主{
公共静态void main(字符串[]args)
{
双和=0,最大值=0,最小值=0,平均值=0,数字;
整数计数=0;
扫描仪输入=新扫描仪(System.in);
而((number=input.nextDouble())!=0)
{
总和+=数字;
计数++;
如果(数字<最小值)
{
minVal=数字;
}
如果(数字>最大值)
{
maxVal=数字;
}
}
平均数=总和/计数;
System.out.println(“总计数:“+Count”);
System.out.println(“总和:+Sum”);
System.out.println(“平均值:+平均值”);
System.out.println(“最大值:+maxVal”);
System.out.println(“最小值:+minVal”);
}

}

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

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

您可以使用第一个输入的数字初始化
minVal
maxVal
,然后才开始循环,而不是将两者都设置为
0

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())
}

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

如果
minValue
从0开始,那么你需要<0的东西来触发更新。从
minVal
开始,比如
Double.POSITIVE_∞