2015-06-29 2 views
1

так моя программа находит среднее значение, медиану, моду, TAND Деву квартиль найти и сохранить резюме 5 NUM в виде массива (min,max,mid,upper and lower quartile)Проблемы с возвращением INT [], чтобы основные и с режимом

Основной только создает a randNum[] и печатает методы.

Метод в режиме должен возвращать -1, если нет режима, если существует несколько режимов.

В итоге 5 NUM в получении несовместимых типов «found int[] required int»

Как отправить массив целых чисел в основной ??

import java.util.*; 

class Statistics 
    { 



//============================================================== 
//---------------------------MEAN-------------------------------- 
    public static double mean(int [] v) 
    { 
    double sum= 0 ; 
    double mean = 0 ; 
    for(double w : v) 
    { 
     sum += w; 
    } 
    mean = sum/v.length; 

    return mean; 
    } 
//============================================================== 
//-----------------------------MODE----------------------------- 

public static int mode(int[] v) 
{ 

    int modeCount = 0,mode = 0, currCount = 0,currElement; 


for (int candidateMode : v) 
    { 
    currCount = 0; 


    for (int element : v) 
    { 

    if (candidateMode == element) 
    { 
    currCount++; 
    } 
    } 


    if (currCount > modeCount) 
    { 
    modeCount = currCount; 
    mode = candidateMode; 
    } 
} 
    return mode; 

} 

    //============================================================== 
//------------------------MIN/MAX/MEDIAN -------------------- 


public static int min(int[] v) 
{ 
    int min1 = v[0]; 
    return min1; 
} 
public static int max(int[] v) 
{ 
    int max1 = v[4]; 
    return max1; 
} 

public static int median(int[]v) 
{ 
    int mid = v.length/2; 
    return mid; 
} 




    //============================================================== 
    //-------------------------Standard Deviation------------------- 

public static double stanDev(int[] v) 
{ 
    double val = 0,adding = 0, divide = 0, answer = 0, square= 0 ; 
    double sum= 0 ; 
    double mean = 0 ; 
    for(double w : v) 
    { 
     sum += w; 
    } 
    mean = sum/v.length; 
     for (double r : v){ 
      val = r - mean; 
      square = val* val; 
      adding += square ; 
      divide = adding /100; 
      answer = Math.sqrt(divide); 

     } 
     return answer; 
} 
//============================================================== 
//-------------------------Quartile----------------------------- 


public static int quartile(int[] v, int upOrLow) 
{ 
     int[] vv = new int[v.length]; 
     System.arraycopy(v, 0, vv, 0, v.length); 
     Arrays.sort(vv); 

     int n = (int) Math.round(vv.length * upOrLow/100); 

     return vv[n]; 

    } 

    //============================================================== 
//-------------------------5 NUM SUMMARY------------------------- 


public static int summ(int [] v) 
{ 
     int[] vv = new int[v.length]; 
     System.arraycopy(v, 0, vv, 0, v.length); 
     Arrays.sort(vv); 

     int n = (int) Math.round(vv.length * 25/100); 
     int n1 = (int) Math.round(vv.length * 75/100); 
     int n2 = v[0]; 
     int n3 = v[49]; 
     int n4 = v[99]; 

     int[] vals1 = {n,n1,n2,n3,n4}; 

     return vals1; 


} 
} 


//============================================================================== 
//===================MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN========================  
//================================================================================ 


import java.util.*; 


public class Main 
{ 
    public static void main(String [] args) 
    { 

    Random rand = new Random(); 

    int [] v = new int[100]; 

    for(int i = 0; i < v.length ; i++) 
    { 
     v[i] = rand.nextInt(489)+10; 
    } 
    Arrays.sort(v); 

    System.out.println(Arrays.toString(v)); 
    System.out.println("The mean is: " + Statistics.mean(v)); 
    System.out.println("The mode is: " + Statistics.mode(v)); 
    System.out.println("The min value is: " + Statistics.min(v)); 
    System.out.println("The max value is: " + Statistics.max(v)); 
    System.out.println("The max value is: " + Statistics.median(v)); 
    System.out.println("The Standard Dev. value is: " + Statistics.stanDev(v)); 
    System.out.println("The lower quartile value is: " + Statistics.quartile(v,25)); 
    System.out.println("The upper quartile value is: " + Statistics.quartile(v,75)); 
    System.out.println("The number summary is: " + Statistics.summ(v)); 
} 
} 
+1

Объявляя его как 'public static int [] summ (int [] v)'? – Marvin

+0

aahaha !!! Спасибо ! lol ... знаете ли вы способ сделать этот способ случайно? –

+0

@JeremiahParrack Что делать, если есть более одного номера, который имеет самые повторяющиеся экземпляры? Вы получите только первый найденный? – Ediac

ответ

0

Для режима вы можете применить следующие изменения:

public static int mode(int[] v) 
{ 
    int modeCount = 0,mode = 0, currCount = 0; 
    boolean thereIsMode = false; 
    boolean ModeIsRepeated = false; 

    for (int candidateMode : v) 
    { 
     if(candidateMode == mode) 
      continue; 

     currCount = 0; 

     for (int element : v) 
     { 
      if (candidateMode == element) 
      { 
       currCount++; 
      } 
     } 

     if (currCount > modeCount) 
     { 
      modeCount = currCount; 
      mode = candidateMode; 
      thereIsMode = true; 
      ModeIsRepeated = false; 
     } 
     else if(currCount == modeCount && candidateMode != mode) 
     { 
      ModeIsRepeated = true; 
     } 
    } 

    if(!thereIsMode || ModeIsRepeated){ 
     return -1; 
    } 

    return mode; 
} 

Я удалил currElement, как это было неиспользованными, и добавлены две новые переменные thereIsMode и ModeIsRepeated. Практически thereIsMode указывает, пуст ли массив или нет, как будто он не пуст, всегда будет как минимум 1 режим. ModeIsRepeated выполняет свое имя, и каждый раз при обнаружении нового режима он возвращается в false.

Также добавлено:

if(candidateMode == mode) 
    continue; 

Для того, чтобы перейти к следующему цикла, если текущий кандидат является таким же, как режим, как проверка нет необходимости.

+0

Удивительное спасибо. Я собираюсь изучить код, который он работает, хотя. Еще раз спасибо. –

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