2015-03-11 2 views
1

У меня есть 2 быстрых вопроса; вот мой код. Я смущен тем, как работает этот режим работы (он работает). Также мне нужна помощь по методу equals. Я просто делаю еще один массив и вижу, равны ли они и как это сделать?Понимание режима и помощи по методу равных

Public class Grades 
{ 
    private int[] grade; 
    private int highest, mode; 
    private double average, median; 

    public Grades(int n) 
    { 
     Random r = new Random(); 
     grade = new int[n]; 
     for (int i = 0; i < n; i++) 
      grade[i] = Math.abs(r.nextInt())%101; 
    } 

    public double getTotal() 
    { 
     int total = 0; 
     int i; 
     for (i = 0; i < grade.length; i++) 
      total += grade[i]; 
     return total; 
    } 

    public void calAverage() 
    { 
     average = getTotal()/(double) grade.length; 
    } 

    public int getHigh() 
    { 
     return highest; 
    } 

    public double getMedian() 
    { 
     return median; 
    } 

    public int getMode() 
    { 
     return mode; 
    } 

    public double getAverage() 
    { 
     return average; 
    } 

    public void highest() 
    { 
     highest = grade[grade.length - 1]; 
    } 

    public void sort() 
    { 

     int i, j, t; 
     for (i = 0; i < grade.length - 1; i++) 
      for (j = i + 1; j < grade.length; j++) 
       if (grade[i] > grade[j]) 
       { 
        t = grade[i]; 
        grade[i] = grade[j]; 
        grade[j] = t; 
       } 
    } 

    public void calMedian() 
    { 

     if (grade.length%2 == 0) 
      median = (grade[grade.length/2 - 1] + grade[(grade.length)/2])/2.; 
     else 
      median = grade[grade.length/2]; 
    } 

    public void calMode() 
    { 
     int[] a = new int[101]; 
     int i, m; 
     for (i = 0; i <= grade.length; i++) 
      a[i] = 0; 
     for (i = 0; i < grade.length; i++) 
      a[grade[i]]++; 
     m = 0; 
     for (i = 0; i < a.length; i++) 
      if (a[i] > a[m]) 
       m = i; 
     mode = m; 
    } 

    public String toString() 
    { 
     int i; 
     String s = ""; 
     for (i = 0; i < grade.length; i++) 
     { 
      s = s + grade[i] + " "; 
      if ((i + 1)%10 == 0) 
       s = s + '\n'; 
     } 
     return s; 
    } 

} 
+0

Вы написали метод режима? –

+0

Профессор не отдал его всему классу, потому что никто этого не понял. –

+1

'calMode' - запутанное имя. Я бы назвал его 'calcMode', если не' calculateMode' (именование жестко :) то же самое относится к 'calAverage' и другим –

ответ

0

Я пошел вперед и объяснил метод mode(), но я не уверен, что вы просите в отношении к equals() методу, если вы можете уточнить, я буду обновлять мой ответ включать объяснение из этого также.

public void calMode() 
{ 
    // This array will allow for indexes from 0 to 100 
    // (the same range as a grade on a 0-100 scale) 
    int []a=new int[101]; 

    int i,m; // these are just temporary indexes 

    // You don't need to do this, an int in java is set to 0 by default 
    // as is an array of ints 
    for(i=0;i<=grade.length;i++) 
     a[i]=0; 

    // Here you are looking at each grade and incrementing the occurrences of each 
    // where each index is the grade and the value stored at that index is the number 
    // of times that grade appears 
    for(i=0;i<grade.length;i++) 
     a[grade[i]]++; 
    m=0; 

    // Here you are finding which grade has the highest frequency (the mode) 
    // by comparing the values you calculated in the previous loop 
    for(i=0;i<a.length;i++) 
     if(a[i]>a[m]) 
      m=i; 
     mode=m; 
} 
+0

, даже я немного смущен на равных. Я думаю, что я хочу, должен ли я сделать метод equals для просмотра, если два массива одинаковы или если 2 числа в одном массиве одинаковы –

+0

К сожалению, я не могу сказать вам, что вы хотите, но в любом случае метод equals справедлив просто, если вы просто сравниваете 2 числа, тогда это так же просто, как 'if (x == y) вернуть true .. else return false'. Если вы сравниваете массивы, это вопрос цикла каждого массива одновременно и сравнения значений, хотя вам может понадобиться их сортировка в первую очередь. – bwegs

+0

Хорошо здорово и сладкое объяснение помогло много. –

Смежные вопросы