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