繁体   English   中英

如何计算范围的平均值?

[英]How to calculate an average of a range?

我需要协助解决作业问题。 问题如下:“使用while循环和do while循环从一定范围的数字计算总和和平均值。显示每个循环的结果。” 我已经完成了大部分代码,但其中的平均部分才有问题。 这是我到目前为止所拥有的。

import java.util.Scanner;

public class Homework {
    public static Scanner input = new Scanner(System.in);
    public static void main(String[] args) {
        //Get the minimum and maximum values for the range.
        System.out.print("Enter the minimum for the range: ");
        int number1 = input.nextInt();
        System.out.print("Enter the maximum for the range: ");
        int number2 = input.nextInt();
        int sum = 0;
        double average = 0;
        while (sum == 0){
            //Get the sum
            for (int i = number1; i <= number2; i++)
                sum = sum + i;
            for (int i = number1; i <= number2; i++)
                average = sum / i;
            System.out.println("(while loop)The sum is " + sum + " and the average is " + average + ".");
        }
        do {
            //reset the sum so it doesn't mess up.
            sum = 0;
            for (int i = number1; i <= number2; i++)
                sum = sum + i;
            for (int i = number1; i <= number2; i++)
                average = sum / i;
            System.out.println("(do-while loop)The sum is " + sum + " and the average is " + average + ".");
        } while (sum == 0);
    }
}

现在,我的主要问题是尝试获取最小值不为1的范围内的平均值。只要范围内的最小值为1,它就可以很好地工作。有什么办法可以使它与a最小值大于1。

int sum = 0;
int counter = number1;
while(counter <= number2){
   sum += counter;
   counter++;
}
System.out.println("Sum:\t" + sum);
System.out.println("Average:\t" + (sum / (number2 - number1 + 1));
//--------------------------------------------------
sum = 0;
counter = number1;
do{
   sum += counter;
   counter++;
}while(counter <= number2);
System.out.println("Sum:\t" + sum);
System.out.println("Average:\t" + (sum / (number2 - number1 + 1));

while循环的条件 (sum == 0)没有任何意义。 如果要在一个范围内进行迭代,则该范围的结束应该是您的条件。 考虑总和平均值之间的关系可以清楚地知道,您只需要循环一次,然后将结果相除即可。 如果愿意,您可以重复循环(如您尝试的那样),但这比较慢且不必要。

干杯!

编辑:我只是想添加一下说明,希望可以进一步解释一下:您编写代码的方式, while / do-while循环只会运行一次(就像您for (int i = 0; i < 1; i++)和你实际上正在做使用用于 while循环循环的更熟悉的循环。 但是,正如另一位评论者所指出的,此作业的目的可能是让您了解如何使用while循环而不是使用更直观的for循环-并通过回到for循环来证明您的老师正确一点:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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