试图找到在Java中输入的数字的发现最小值
问题描述:
因此,该程序应该能够读取任意数量的数字,并获得平均值,总数和最小/最大值。输入数字,循环停止,一旦进入0(0不计数最小/总数等)我卡在最小值。我知道它不应该被硬编码为0,但是我会如何将它设置为在循环中取最小值?试图找到在Java中输入的数字的发现最小值
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);
}
}
答
您初始化min
和max
到零,然后与用户输入进行比较,除非值为正,你不会设置max
(或负设置min
)。更改初始值,如
double sum = 0, maxVal = Double.NEGATIVE_INFINITY,
minVal = Double.POSITIVE_INFINITY, average = 0, number;
而不是将两者设置为0
。
答
您可以用第一个输入的数字初始化minVal
和maxVal
,然后才能开始循环。
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开始,则需要 John3136
像'Double.POSITIVE_INFINITY'这样的东西启动'minVal'。 –