2016-10-05 1 views
0

Предоставлено ниже код дает исключения нулевого указателя наКак хранить String [] (массив) в String [] [] (массивы массива)

public class Testing { 
    public static final String HD_DATA = "STOCK,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10"; 
    public static final String HD_DATA_1 = "1,10,20,30,40,50,60,70,80,90,100"; 
    public static final String HD_DATA_2 = "2,11,22,33,44,55,66,77,88,99,111"; 
    public static void main(String[] args) { 
     String[] hdDataArray = HD_DATA.split(","); 
     String[] hdDataArray1 = HD_DATA_1.split(","); 
     String[] hdDataArray2 = HD_DATA_2.split(","); 
     String[][] pram = new String[3][]; //[null, null, null] 

     for(int i=0;i<3;i++) { 
      for(int j=0;j<hdDataArray.length;j++) { 
       if(i ==0) { 
        pram[i][j] = hdDataArray[j]; // Exception in thread "main" java.lang.NullPointerException 
       } 
       else if (i ==1){ 
        pram[i][j] = hdDataArray1[j]; 
       } else if(i == 2) { 
        pram[i][j] = hdDataArray2[j]; 
       } 
      } 
     } 
     System.out.println(pram); 
    } 
} 

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

+0

Пожалуйста, объясните больше, что вы хотите, неясно, что вы подразумеваете под «вставкой данных во время выполнения», .. –

+2

Пожалуйста, обратитесь к http://stackoverflow.com/questions/218384/what- is-a-nullpointerexception-and-how-do-i-fix-it и http://stackoverflow.com/questions/1922677/nullpointerexception-when-creating-an-array-of-objects Эти вопросы (особенно первые) покажет вам суть проблемы и предоставит вам инструменты, необходимые для понимания исключения, почему он подходит, и исправить его на этот раз и на будущее. – Tunaki

+0

во время выполнения назначают массивы массива new String [3] [atRuntime] –

ответ

4

Поскольку pram = [null, null, null] и, таким образом, pram[i] (массив в i положении в массив массивов) составляет null при доступе к нему через pram[i][j].

public class Testing { 
    public static final String HD_DATA = "STOCK,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10"; 
    public static final String HD_DATA_1 = "1,10,20,30,40,50,60,70,80,90,100"; 
    public static final String HD_DATA_2 = "2,11,22,33,44,55,66,77,88,99,111"; 

    public static void main(String[] args) { 
     String[] hdDataArray = HD_DATA.split(","); 
     String[] hdDataArray1 = HD_DATA_1.split(","); 
     String[] hdDataArray2 = HD_DATA_2.split(","); 
     String[][] pram = new String[3][]; //[null, null, null] 

     pram[0] = hdDataArray; 
     pram[1] = hdDataArray1; 
     pram[2] = hdDataArray2; 

     System.out.println(pram); 
    } 
} 
2

Вы можете сделать это несколько способов:

pram[0] = hdDataArray; 
pram[1] = hdDataArray1; 
pram[2] = hdDataArray2; 

Или вы можете инициализировать pram непосредственно:

String[][] pram = { 
    hdDataArray, 
    hdDataArray1, 
    hdDataArray2 
}; 
-1
String[][] pram = new String[][] { hdDataArray, hdDataArray1, hdDataArray2 }; 

попробовать это. вы можете напрямую назначить свои массивы в новый массив.

+5

Эти ответы не одобряются; в то время как вы технически правы, не авторитетная «попытка этого» обескураживается, а не фактически демонстрирует * почему * этот ответ правильный. – Makoto

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