2013-12-14 62 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。