尝试查找Java中输入的数字的最小值
因此,该程序应该能够读取任意数量的数字,并输出平均值、总数和最小/最大值。输入0后,循环停止(0不计入最小/总数等)。我被卡在最小值上。我知道它不应该硬编码为0,但是我如何设置它以获取循环中的最低值呢尝试查找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
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_∞
。