2013-12-14 96 views
1

我正在構建的方法應打印方法中平均值以上的所有值。 我已經構建了計算平均值的方法,然後僅打印高於該值的值。打印數組值高於某個值

但是,它會輸出正值。

int total = 0; 
    for (int i = 0; i < intList.length; i++) 
    { 
     total += intList[i]; 
     { 
      if (intList[i] > intList[total]) 
      { 
       System.out.println(intList[i] + "\t"); 
      } 
     } 
    } 


    return total; 

如何使這麼不是打印它打印只值的所有陽性上面的數組中的平均值數組中?

回答

0
public static void main(String[] args) { 
    int[] values = new int[] { 1, 5, 2, 6, 3, 7, 4, 8 }; 

    double sum = 0; 
    for (int value : values) 
     sum += value; 

    double avg = sum/values.length; 

    System.out.printf("AVG = %.2f\n----------\n", avg); 

    for (int value : values) { 
     if (value > avg) 
      System.out.println(value); 
    } 
} 

輸出:

AVG = 4.50 
---------- 
5 
6 
7 
8 
+0

現在您的平均值是正在使用整數除法,這將導致精度誤差 – user2573153

+0

@ user2573153我是說的一樣,這是完全像我的答案,但用平均爲int – nachokk

+0

@ user2573153這個答案是錯誤的計算..有錯誤 – nachokk

3

您需要兩個不同的循環。一個將所有數字相加得到總數。然後你需要從這個總數中得到平均值。然後再次循環檢查並打印

0

您必須循環2次,一次用於計算平均值,然後在計算總計時,如果比較,則必須更改。 intList[i] > intList[total]intList[i] > total

實施例:

public static void main(String args[]){ 
    int[] intList = {1,2,3,4,5,6,7,8,9,10}; 
    int total = 0; 
    // first loop calculate 
    for (int i : intList){ 
     total += i; 
    } 

    double average = total/(double)intList.length;//take care array can't be empty. 

    System.out.println("average :"+ average);  

    //then show 
    for(int i : intList){ 
     if (i > average){ 
      System.out.println(i + "\t"); 
     }   
    } 
} 
0

上述釘它,第二個循環是不是比較平均,而總的答案。首先需要一個循環來獲取數組的平均值,然後再用第二個循環來測試數組的平均值。

for (int i = 0;i < array.count; i++){ 
    total = total + array[i] 
} 
average = total/array.count 
for (int i = 0;i < array.count; i++){ 
    if (array[i]>total){ 
     print 
    } 
} 

Theres some pseudocode/ish to get you going。