2014-10-31 3 views
0

Я хочу создать метод добавления Arrayylist firstRow. Но я продолжаю получать ошибку nullPointerexception. Его из-за цикл for(int i = 0; i<firstRow.length; i++) в getArraylistsum() методеДобавление метода значений Arraylist java

Вот весь код:

int[] row1; 

public int getArraylistsum(){ 
    int sum = 0; 
    for(int i = 0; i<row1.length; i++){ 
     sum += row1.length; 
    } 
    return sum; 
} 

public static void main(String[] args){ 
    ArrayList<Integer> row1 = new Arraylist<>(10); 
    row1.add(1); 
    row1.add(8); 
    row1.add(6); 

    ClassName row = new ClassName(); 
    System.out.println(row.getArraylistsum()); 

} 

Спасибо за вашу помощь.

+0

Может быть, вы могли бы написать что-то вроде 'междунар [] row1 = новый INT [10];' на вашей первой линии - на самом деле сделать массив, а не просто объявив об этом. Кроме того, очень плохая идея использовать одно и то же имя для этого массива, как вы использовали для 'ArrayList', который вы создали внутри' main'. –

+0

@DavidWallace Я предполагаю, что значение row1 никогда не передавалось функции getArraylistsum –

+1

@KickButtowski Я полагаю, что это будет общий смысл следующего вопроса Сверхъестественного на этом сайте. –

ответ

1

Вы не инициализировать

int[] row1;// when you create a instance of a class this row1 will null 

Тогда row1.length дать вам NullPointerException

Вы должны инициализировать row1 перед использованием его.

int[] row1=new int[size]; 
0

ArrayList<Integer> row1 объявлен и инициализирован в основном методе. Ваш getArraylistsum() пытается получить доступ к другой переменной int[] row1, которая не инициализирована. Поэтому он вызывает NullPointerException.

0

Сначала инициализировать row1

int[] row1; 

В вашем случае, как row1 не intialized и вы пытаетесь Acces длину что Row1 вот почему вы получили NullPointerException

1

Я думаю ИНТ [] row1 не необходимо, и значения также не назначаются массиву row1. вместо используемого массива row1, передал array1 arraylist вашему методу. В основной функции ArrayList записывается как Arraylist. Я изменил это на Arraylist.

public int getArraylistsum(ArrayList<Integer> row1){ 

    int sum = 0; 
    for(int i = 0; i<row1.size(); i++){ 
     sum += row1.get(i); 
    } 
    return sum; 
} 

public static void main(String[] args){ 
    ArrayList<Integer> row1 = new ArrayList<Integer>(10); 
    row1.add(1); 
    row1.add(8); 
    row1.add(6); 

    ClassName row = new ClassName(); 
    System.out.println(row.getArraylistsum(row1)); 

} 
0

Используется две переменные row1. Сделайте переменную ArrayList переменной статического класса, объявив Список по static ArrayList<Integer> row1; вместо int[]. В основном методе вы должны использовать ClassName.row1 = new ArrayList<Integer>();.

0

null.length определенно дает NullPointerException int[] row1 = null; и вы вызываете метод на null например, внутри getArraylistsum() метода.

инициализируйте экземпляр row1 внутри метода getArraylistsum(), используя приведенный ниже код.

row1 = новый int [размер];

0

Вы должны использовать для каждой функции, как

public int getArraylistsum(ArrayList<Integer> row1){ 

    int sum = 0; 
    for(int i:row1){ 
     sum += i; 
    } 
    return sum; 
} 
Смежные вопросы