2015-10-03 38 views
0

我已經計算了循環範圍的總和,但是我不知道如何計算和做我的解決方案的平均值。 它必須完成沒有任何ifs。就在For循環:Java的循環總和和平均範圍

//defining the variables 
     // Constants & Variables here 
int i; 
int numStart; 
int numEnd; 
double sum = 0; 
double average=0; 
double loopCount=0; 
System.out.print("Enter Start number: "); // keep print line open 
numStart = console.nextInt(); 

System.out.print("Enter End number: "); 
numEnd = console.nextInt(); 

     //enter thevalue 
     for (i = numStart; i <= numEnd; i++) 
     { 
      sum = sum + i; 
      loopCount = numEnd - numStart; 
      average = sum+1/i; 


     } 
     System.out.println(); 
     System.out.println("Sum is: " + sum); 
     System.out.println(); 
     System.out.println("Average is: " + average); 
     System.out.println(); 
+0

您numEnd的平均 – NightsWatch

+0

這是將您的總和什麼我第一次嘗試,但它不僅僅是...在這裏看我得到什麼。 輸入第一數目:11 輸入端號碼:15 總和爲65(這將增加11 + 12 + 13 + 14 + 15) 但使用的 平均=總和/ numEnd這個公式的平均值; 它給出了錯誤的平均值4.33而不是13 –

回答

0
for (i = numStart; i <= numEnd; i++) 
    { 
     sum = sum + i; 
     loopcount++; 
    } 
    average = sum/loopcount; 
3

爲什麼即使使用for -loop。感謝高斯,我們知道範圍[1 , n]中所有元素的總和是n * (n + 1)/2。範圍中的整數數量僅爲numEnd - numStart + 1,平均值爲範圍內所有整數的和除以該範圍內的整數數量。

所以優化的解決方案是這樣的:

... 
//got numStart and numEnd 
int sum = numEnd * (numEnd + 1)/2 - (numStart - 1) * numStart/2; 
int count = numEnd - numStart + 1; 
average = sum/count; 
0

你可以這樣做:

for (i = numStart; i <= numEnd; i++) 
        { 
         sum = sum + i; 
         loopCount = numEnd - numStart; 
         average = sum /(loopCount+1); 


        } 

for (i = numStart; i <= numEnd; i++) 
       { 
        sum = sum + i; 
        loopcount++; 
       } 
       average = sum/loopcount;