繁体   English   中英

如何计算最小值,最大值,总和和平均值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM