【问题标题】:how to calculate min, max, sum, and avg如何计算最小值、最大值、总和和平均值
【发布时间】:2014-11-20 18:08:58
【问题描述】:
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);*/
}

我知道这比我让它看起来更容易,但我一生都无法弄清楚如何让我的代码计算最小值、最大值、总和和平均值。我需要它,以便我可以输入任意数量的任意数量的数字并不使用数组来计算它们(因为我的班级还没有到达那里)。

提前谢谢你

【问题讨论】:

  • 请修正你的缩进。
  • 我认为一旦进入 while 循环,您将永远无法计算出新的 min/max/avg。但正如杰里米所说,修复你的缩进:)

标签: java sum max average min


【解决方案1】:

首先,您应该将 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 &lt; min) min = num;。还有一个简写符号:min = num &lt; min ? num : min;

  • 计算最大值与计算最小值相同(正好相反)。我相信你可以找出解决方案。

  • 无法在每次迭代中更新平均值。但我们可以在最后计算它。平均值是多少?它是总和除以和数。所以你需要计算你读了多少次一个数字。您可以通过存储在每次迭代中递增的附加变量来做到这一点。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 2023-03-31
    • 1970-01-01
    • 2016-11-04
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多