2016-11-15 519 views
2

我需要幫助的作業問題。問題如下:「使用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它完美罰款有沒有什麼辦法,我能得到它的逾1

+0

開始通過正確縮進你的代碼。實際上很難閱讀。 – litelite

+0

平均只是總和/(更高 - 更低) – ControlAltDel

+1

我認爲這個任務意味着使用'while'循環*代替'for循環。你目前的「while」和「do-while」完全沒有必要。 – Keiwan

回答

3
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循環的條件最小值工作(總和== 0)沒有意義。如果你想迭代一個範圍,該範圍的結束應該是你的條件。考慮一個總和平均值之間的關係清楚表明,只需循環一次,然後除以結果即可。如果你願意,你可以重複循環(如你所試圖做的那樣),但是它更慢更不必要。

乾杯!

編輯:我只是想添加此澄清,我希望將解釋的東西遠一點:你寫代碼的方式,你/做,而循環將只運行一次(就像如果你做了for (int i = 0; i < 1; i++)),你實際上正在使用更熟悉的進行循環使用循環裏面的循環。然而,正如另一位評論者指出,這項任務的目的可能是讓您看到如何使用而使用循環,而不是使用更直觀的for循環 - 然後再回到循環,而不是你證明你的老師有點:)

+0

啊,好的。謝謝,這真的很有幫助。 – Joota