结果于答案差0.2,想不出哪错了


BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String s[]=br.readLine().split(" ");
        int max=Integer.parseInt(s[0]);
        int min=Integer.parseInt(s[0]);
        String tmp;
        String tmp1;
        int maxIndex=0;
        int minIndex=0;
        double sum=0.0;
        for (int i = 1; i < s.length; i++) {
            int value=Integer.parseInt(s[i]);
            if(maxmax=value;
                maxIndex=i;
            }
            if(min>value){
                min=value;
                minIndex=i;
            }
        }
        tmp=s[s.length-1];
        s[s.length-1]=String.valueOf(max);
        s[maxIndex]=tmp;
        tmp1=s[s.length-2];
        s[s.length-2]=String.valueOf(min);
        s[minIndex]=tmp1;
        for (int i = 0; i "%.2f",sum/5));

输入77 78 79 77 76 75 74
输入76.40,但答案是76.60

这个题是想把输入数据中最大值交换到最后,最小值交换到倒数第二的位置,然后计算排除掉最大最小两个数的剩余数的平均值。是吗?
本次输入的最小数在最后,最大数交换到最后以后,最小数换位置了,但minIndex没同步修改,导致交换最小数位置时,换了错误的数。前面的5个数偏小1,所以答案偏小0.2。
输入:
77 78 79 77 76 75 74
交换最大数后:
77 78 74 77 76 75 79
交换最小数后(正常应该第3个和第6个数交换):
77 78 74 77 76 79 75