2014-11-11 1 views
-2

Я использовал этот код для вычисления максимального значения и медианного элемента в массиве целых чисел, но когда я вызываю методы в моем классе клиента, оба этих метода производят выход ноль. Имя массива «сорт» и состоит из случайно сгенерированных чиселПоиск среднего и максимального значения массива в java

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

где ваш класс драйвера? это задание? –

+3

как вы это назвали? – DnR

+0

Я назвал его как: System.out.println («Высший сорт» + grades.getHighest()); \t \t System.out.println («Медианный сорт» + grades.getMedian()); – mcolston

ответ

0

Немногий ошибки.

1.) Может быть вызвано getMedian(), тогда как логика находится внутри метода median().

2.) Внутри метода, getHighest(),

а.) Нет необходимости в цикле массива, так как массив уже отсортирован. Поэтому я прокомментировал код. Просто получите значение в последнем индексе массива.

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