2015-03-03 1 views
-5

Мне нужно реализовать четыре статических метода в классе с именем ArrayStatistics. Каждый из четырех методов будет вычислять среднее значение среднего, среднего, режима и стандартного отклонения населения, соответственно, значений в массиве.Массивы, статистика и вычисление среднего, медианного, режима, среднего и sqrt

Это мой первый опыт работы с Java, и я не могу понять, что мне делать дальше. Мне дали некоторые тестовые значения, как вы догадались, проверьте мою программу.

public class ArrayStatistics { 

    public static void main(String[] args) { 
     final int[] arr; 
     int[] testValues = new int[] { 10, 20, 30, 40 }; 
     meanValue = a; 
     meadianValue = b; 
     modeValue = c; 
     sqrtDevValue = d; 
     average = (sum/count); 

     System.out.println("Average is "); 
    } 

    static double[] mean(int[] data) { 
     for(int x = 1; x <=counter; x++) { 
      input = NumScanner.nextInt(); 
      sum = sum + inputNum; 
      System.out.println(); 
     } 
     return a; 
    } 

    static double[] median(int[] data) { 
     // ...  
    } 

    public double getMedian(double[] numberList) { 
     int factor = numberList.length - 1; 
     double[] first = new double[(double) factor/2]; 
     double[] last = new double[first.length]; 
     double[] middleNumbers = new double[1]; 

     for (int i = 0; i < first.length; i++) { 
      first[i] = numbersList[i]; 
     } 
     for (int i = numberList.length; i > last.length; i--) { 
      last[i] = numbersList[i]; 
     } 
     for (int i = 0; i <= numberList.length; i++) { 
      if (numberList[i] != first[i] || numberList[i] != last[i]) middleNumbers[i] = numberList[i]; 
     } 
     if (numberList.length % 2 == 0) { 
      double total = middleNumbers[0] + middleNumbers[1]; 
      return total/2; 
     } else { 
      return b; 
     } 
    } 

    static double[] mode(int[] data) { 
     public double getMode(double[] numberList) { 
     HashMap<Double,Double> freqs = new HashMap<Double,Double>(); 

     for (double d: numberList) { 
      Double freq = freqs.get(d); 
      freqs.put(d, (freq == null ? 1 : freq + 1)); 
     } 
     double mode = 0; 
     double maxFreq = 0;  

     for (Map.Entry<Double,Doubler> entry : freqs.entrySet()) {  
      double freq = entry.getValue(); 
      if (freq > maxFreq) { 
       maxFreq = freq; 
       mode = entry.getKey(); 
      } 
     }   
     return c; 
    } 

    static double[] sqrt(int[] sqrtDev) { 
     return d; 
    } 
} 
+4

И ваш вопрос ...? –

+2

введите свой вопрос в google и добавьте «tutorial» – displayname

+0

ваш код почти нечитабелен в его текущем формате. Вы должны отформатировать его лучше – Brandon

ответ

0

Это довольно легко.

public double mean(ArrayList list) { 
double ans=0; 
for(int i=0; i<list.size(); i++) { 
ans+=list.get(i); } 
return ans/list.size() 
} 

` Медиана:

public void median(ArrayList list) { 
    if(list.size()%==2) return (list.get(list.size()/2)+list.get(list.size()+1))/2; 
else return list.get((list.size()/2)+1) 
    } 

Для режима, просто вести учет по частоте встречаемости каждого номера, очень легко.

Для стандартного отклонения найти среднее и просто использовать формулу, приводимую здесь: https://www.mathsisfun.com/data/standard-deviation-formulas.html