在java中查找数组的中值和最大值

时间:2014-11-11 02:50:21

标签: java arrays methods median

我使用此代码计算整数数组中的最大值和中间元素,但是当我在客户端类中调用方法时,这两个方法都会产生零输出。数组的名称是" grade"它由随机生成的整数组成

import java.util.*;
public class StudentGrades {

    private int [] grades;

    //Constructor
    public StudentGrades ( int students)
        {
        Random number = new Random();
        grades = new int[students];
        for (int i = 0 ; i < students ; i++)
            {
            grades[i] = number.nextInt(99) + 1;
            }
        }
    double median;
    public void median()
    {
        Arrays.sort(grades) ;
        double median ;

        if (grades.length % 2 == 0)
        {
            int indexA = (grades.length - 1 ) /2;
            int indexB = (grades.length)/2;

            median = ((double) (grades[indexA] + grades[indexB]))/2;
        }
        else
        {
            int medIndex = (grades.length-1) / 2;
            median = grades[ medIndex ];
        }
    }

    public double getMedian()
    {
        return median;
    }


    int max;
    public int getHighest()
    {
        for(int i = 0 ; i < grades.length - 1 ; i++)
        {   
            int max = 0;
            if(grades[i] > max)
            {
                max = grades[i];
            }
        }
        return max; 
    }

在我的驱动程序中,我只需要证明该方法正常工作,所以它是:

System.out.println(" The highest grade is" + grades.getHighest());
System.out.println("The median grade is" + grades.getMedian());

1 个答案:

答案 0 :(得分:0)

几个错误。

1。)可能正在调用getMedian(),而逻辑在median()方法内。

2。)内部方法,getHighest()

a。)无需循环数组,因为数组已经排序。所以我评论了代码。 只需获取数组最后一个索引的值。

public class Test {
    static int    max;
    static double median;

    static int[]  grades = { 2, 3, 4, 5, 62, 34 };

    public static void main(String args[]) {
        Arrays.sort(grades);

        median();
        getHighest();

        System.out.println(median);
        System.out.println(max);
    }

    public static void median() {

        if (grades.length % 2 == 0) {
            int indexA = (grades.length - 1) / 2;
            int indexB = (grades.length) / 2;

            median = ((double) (grades[indexA] + grades[indexB])) / 2;
        } else {
            int medIndex = (grades.length - 1) / 2;
            median = grades[medIndex];
        }
    }

    public double getMedian() {
        return median;
    }

    public static int getHighest() {
        /* for (int i = 0 ; i < grades.length ; i++) {
         if (grades[i] > max) {
             max = grades[i];
         }
     }*/
     max = grades[grades.length - 1];
     return max;
    }

<强>输出

4.5
62