簡體   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