[英]how to calculate min, max, sum, and avg
import java.util.*;
public class Lab5_2{
public static void main(String[]args){
Scanner scan = new Scanner(System.in);
int num=0;
boolean choice=true;
int min= Math.min(100, num);// need to fix the min to the avg, won't print out
int max= Math.max(0, num);
int sum=+ num;
double avg= sum/(num+1);
while(choice==true){
if(num>=0 && num<=100){
System.out.println("Please enter a number between 0 and 100 ");
num= scan.nextInt();
System.out.println("You entered: " + num);
}else if(num<0 || num>100){
choice=false;
System.out.println("Thank you ");
}
}
}
/*
System.out.println("Min = " + min);
System.out.println("Max = " + max);
System.out.println("Sum = " + sum);
System.out.println("Avg = " + avg);*/
}
我知道这要容易得多,然后使它看起来似乎很简单,但是我一生都无法弄清楚如何获取代码来计算最小值,最大值,总和和平均值。 我需要它,以便我可以输入任意数量的任意数量的数字,并且不使用数组来计算它们(因为我的课程还没到那儿)。
先感谢您
首先,您应该将Scanner.read放在while循环之外,因为您不希望处理不在您范围内的数字:
while (choice) {
System.out.println("Please enter a number between 0 and 100 ");
num = scan.nextInt();
if (num >= 0 && num <= 100) {
// accept number and update min, max, sum
} else {
choice = false;
}
}
现在,让我们计算一下这些值:
计算sum
很容易:最初,我们的总和为0
,并且每个接受的数字都会累加。 因此,要计算总和,我们只需添加num
,即sum = sum + num
。
最小值始终至少与上一次迭代的最小值一样大。 我们不需要知道任何其他迭代的值,因此不需要数组(或其他集合)来存储它们。 我们简单地检查num
是否小于先前的最小值,如果为真,则替换最小值,即if (num < min) min = num;
。 还有一种简写形式: min = num < min ? num : min;
min = num < min ? num : min;
计算最大值与计算最小值相同(正好相反)。 我确定您可以找到解决方案。
平均值不能在每次迭代中更新。 但是我们可以在最后进行计算。 平均值是多少? 它是总和除以被请求数。 因此,您需要计算您读过一个数字的次数。 您可以通过存储在每次迭代中增加的附加变量来实现。
有了这些信息,您应该能够编写代码。 请注意,在进入循环之前,变量的正确初始化至关重要。 仔细考虑一下。 此外,还需要考虑一个特殊情况:如果用户未输入单个数字,会发生什么情况? 在这种情况下,您的价值观应该是什么? 不要忘记除以零是不确定的!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.