如何计算min,max,sum和avg

时间:2014-09-25 20:30:01

标签: java sum max average min

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);*/
}

我知道这比看起来容易得多,但我不能为我的生活弄清楚如何让我的代码来计算min,max,sum和avg。我需要它,以便我可以输入任意数量的任何数字,并且不使用数组计算它们(因为我的课程没有到达那里)。

提前谢谢

1 个答案:

答案 0 :(得分:3)

首先,您应该在while循环之外使用Scanner.read,因为您不希望处理不在您范围内的数字:

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;

  • 计算最大值与计算最小值(只是反向)相同。我确定你能找到解决方案。

  • 每次迭代都无法更新平均值。但我们可以在最后计算它。平均值是多少?它是总和除以加数的数量。因此,您需要计算读取数字的次数。您可以通过存储在每次迭代中递增的其他变量来完成此操作。

有了这些信息,您应该能够编写代码。请注意,在进入循环之前正确初始化变量至关重要。仔细想想。此外,还有一个需要考虑的角落情况:如果用户没有输入单个数字,会发生什么?在这种情况下,你的价值观应该是什么?不要忘记,除零是不明确的!