如何在没有max和min的情况下求解数组中的均值?

时间:2016-10-19 03:33:04

标签: java arrays

public class FunWithArrays {
    public static void main(String[] args) {
        int[] myFunArray = {7, 10, 3, 0, 615, -1000};
        int i;
 //minimum 
    int min;
    min = myFunArray[0];
    for (i=0; i < myFunArray. length; i++) {
    if (myFunArray[i] < min) {
        min = myFunArray[i];
    } 
 }
 //maximum 
 int max;
 max= myFunArray[0];
 for (i=1; i < myFunArray. length; i++) {
    if (myFunArray[i] > max) {
        max = myFunArray[i];
        }
    }
 System.out.println("minimum = " + min + " maximum = " + max);
        //mean without outliers
        double noOutliersMean = 0;
        for (i=0; i < myFunArray.length; i++){
            noOutliersMean = ((sum - (max + min)) /myFunArray.length );
            if ( myFunArray.length < 3){
                System.out.println("not enough numbers");
            }
        }
        System.out.println("Mean without Outliers: " +noOutliersMean);

        //Array reversed
        int[] reversed = myFunArray;
        for(int i1 = reversed.length - 1; i1 >= 0 ; i1--) {
            System.out.println( "Reversed " + reversed[i1]);
        }
    }
}

对于没有异常值(max和min)的平均值,答案应为5,我的代码行给出了1.333。我做错了什么?

关于阵列反转的第二个问题,当打印出来时,它给出了正确的答案,但每个数字在一个单独的行上。我如何让它在1行格式;逆转:[ - 1000,615,0,3,10,7]

2 个答案:

答案 0 :(得分:0)

你的第二个问题的答案是不打印

println

,只需使用print

代码应为:

System.our.print("Reversed: [")
for(int i1 = reversed.length - 1; i1 >= 0 ; i1--) {
    System.out.print(reversed[i1]);
    if(i1>0){
       System.our.print(",");
    }
}
System.out.print("]");

要回答您的第一个问题,您需要提供以下内容:

如何计算总和,最大值和最小值。即使你提到没有max和min ..你仍然在你的代码中使用它

答案 1 :(得分:0)

在操作数组时考虑代码的逻辑...... 你会看到意味着没有最小值或最大值与以下相同: 如果数组已排序,则排除index0和index length-1处的元素的平均值,这就是你必须做的事情

  1. 对数组进行排序
  2. 循环排除第一个和最后一个
  3. 计算平均值
  4. 实施例

    int[] myFunArray = { 7, 10, 3, 0, 615, -1000 };
    // unsorted { 7, 10, 3, 0, 615, -1000 };
    // sorted { -1000, 0, 3, 7, 10, 615 };
    
    Arrays.sort(myFunArray);
    System.out.println(Arrays.toString(myFunArray));
    int acumm = 0;
    double mean = 0.0;
    for (int i = 1; i < myFunArray.length - 1; i++) {
        acumm += myFunArray[i];
    }
    mean = acumm / (myFunArray.length - 2);
    System.out.println(mean);