2015-09-05 2 views
1

Когда я пытаюсь передать 2d массив (myString) конструктору, Eclipse показывает мне NullPointerException в следующей строке:NullPointerException при прохождении 2d массив в конструктор

DenseBoard<String> temp1 = new DenseBoard<String>(myString, "a"); 

Может кому-л, пожалуйста, объясните мне, что я сделал неправильно ? Заранее спасибо!

public class Tester { 

    public static void main(String[] args){ 

     String[][] myString = {{"A B C"}, {"D E F"}, {"G H I"}}; 
     DenseBoard<String> temp1 = new DenseBoard<String>(myString, "a"); 
     System.out.println(temp1); 
    } 
} 

Класс DenseBoard

import java.util.*; 
public class DenseBoard <T> { 

private ArrayList<ArrayList<T>> myBoard; 

public DenseBoard(T[][] x, T fillElem){ 

     for(int i = 0; i < x.length; i++){ 
     ArrayList<T> values = new ArrayList<T>(); 
      for(int j = 0; j < x[0].length; j++){ 
       values.add(x[i][j]); 
      } 
      myBoard.add(values); 
     } 
    } 

public String toString(){ 
     String result = ""; 
     for(int i = 0; i < myBoard.size(); i++){ 
      for(int j = 0; j < myBoard.get(i).size(); j++){ 
       result += myBoard.get(i).get(j); 
      } 
      System.out.println(); 
     } 
     return result; 
    } 

} 
+1

В дополнение к ответам, вы должны исправить это: 'x.length',' x' - это 2-й массив, вам нужно что-то вроде 'x [0] .length'. – Zarwan

ответ

2

Вы havn't Initialized переменная myBoard и в течение цикла вы должны использовать x[i].length вместо x[0].length

Попробуйте это: -

package p1; 
import java.util.ArrayList; 
public class A1{ 
    public static void main(String[] args) { 
     String[][] myString = {{"A B C"}, {"D E F"}, {"G H I"}}; 
     DenseBoard<String> temp1 = new DenseBoard<String>(myString, "a"); 
     System.out.println(temp1); 
    } 
} 

class DenseBoard <T> { 
    private ArrayList<ArrayList<T>> myBoard; 
    public DenseBoard(T[][] x, T fillElem){ 
     myBoard = new ArrayList<>(); 
     for(int i = 0; i < x.length; i++){ 
      ArrayList<T> values = new ArrayList<T>(); 
      for(int j = 0; j < x[i].length; j++){ 
       values.add(x[i][j]); 
      } 
      System.out.println(i); 
      System.out.println(values); 
      myBoard.add(values); 
     } 
    } 
    public String toString(){ 
     String result = ""; 
     for(int i = 0; i < myBoard.size(); i++){ 
      for(int j = 0; j < myBoard.get(i).size(); j++){ 
       result += myBoard.get(i).get(j); 
      } 
      System.out.println(); 
     } 
     return result; 
    } 
} 
0

Ваш myBoard является недействительным.

Вы должны инициализировать его,

private ArrayList<ArrayList<T>> myBoard = new ArrayList<>(); 
1

Ваш myBoard не инициализирован в java. Поэтому сначала вы должны инициализировать объект перед его использованием. Попробуйте

private ArrayList<ArrayList<T>> myBoard = new ArrayList<>(); 
Смежные вопросы