日期:2014-05-20  浏览次数:20686 次

为什么空指针
public   static   void   main(String[]   args)   {

int   number   =   2;
List   ex     =   new   ArrayList();
String   [][]   arr   =   new   String[number][];
for   (int   j   =   0;   j   <   8;   j++)   {
if   (number   >   0)   {
for   (int   i   =   0;   i   <   number;   i++)   {
arr[i][j]   =   "a ";
}
}
}
for(int   i   =   0;i <arr.length;i++){
for(int   j=0;j <arr[i].length;j++){
System.out.println(arr[i]);
}
}
}

------解决方案--------------------

这样定义
String[][] arr = new String[number][];

这样使用
arr[i][j] = "a ";

不和谐所致

第二维没有指定维数,即没初始化,更不能直接赋值了。
------解决方案--------------------
二维数组
public class Test2 {
public static void main(String[] args) throws Exception {

int number = 2;
List ex = new ArrayList();
String[][] arr = new String[number][];
for (int i = 0; i < arr.length; ++i) {
arr[i] = new String[8];
}
for (int i = 0; i < number; i++) {
for (int j = 0; j < 8; j++) {
arr[i][j] = "a ";
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}

}
}
------解决方案--------------------
List [] elother = new ArrayList[number];
这个过程并没有完成初始化,只是声明了一个含有2个元素的List数组,并且规定其实例化类型为ArrayList,就是缺少了最后实例化的步骤。

须如此:
List[] elother = new ArrayList[]{new ArrayList(),new ArrayList()};