2016-02-29 3 views
0

Итак, у меня есть проект, для которого требуется общий класс, который расширяет Number, а также находит самое большое и наименьшее значение в массиве, среднее значение всех значений и размер массива. Это кажется достаточно простым для реализации, но у меня есть проблема, прежде чем даже поставить общую часть этого на место, я получаю ошибку времени выполнения Null Pointer Exception на x.length, независимо от того, какой метод я вызываю, всегда в одном и том же месте.Null Pointer Exception в массиве прошел класс

import java.util.Comparator; 

public class test 
{ 
    public int x[]; 

    public test(int x[]) 
    { 

    } 

    public void setx(int newx[]) 
    { 
    x = newx; 
    } 

    public int[] getx() 
    { 
    return x; 
    } 



public int findSmallest() 
{ 
    int i = 0; 
    int temp = x[i]; 

    while (i < x.length) 
    { 
     i++; 
     if(x[i] < temp) 
     { 
     temp = x[i];  
     } 
     else 
     { 

     } 

    } 

    return temp; 

    } 



public int findLargest() 
{ 
    int i = 0; 
    int temp = x[i]; 


    while (i < x.length) 
    { 
     i++; 
     if(x[i] > temp) 
     { 
     temp = x[i]; 
     } 
     else 
     { 

     } 

    } 

    return temp; 

    } 

public double findMean() 
{ 
    int i = 0; 
    double sum = 0.0; 
    double avg = 0.0; 

    while (i < x.length) 
    { 
     sum += x[i]; 
     i++; 
    } 

    avg = sum/x.length; 
    return avg; 
} 

public int findTotal() 
{ 

    int i = x.length; 

    return i; 

} 

public static void main (String args[]) 
{ 

int[] ia = {1, 2, 3, 4, 5, 6}; 

test intTest = new test(ia); 

System.out.println(intTest.findTotal()); 

} 


} 



Any help on how to fix this would be amazing. 

ответ

0

Вы забыли использовать метод setx в конструкторе. Вы передаете целочисленный массив в конструктор, но не инициализируете целочисленный массив внутри класса. Вы можете сделать это, вызвав метод setx в своем конструкторе и передав целочисленный массив x в метод setx. Надеюсь, это поможет.