黑马程序员技术交流社区
标题:
下面代码为什么会出现空指针异常
[打印本页]
作者:
zhkqy
时间:
2013-12-10 19:34
标题:
下面代码为什么会出现空指针异常
*将字符串存储到二维的double数组中"1,2;3,4,5;6,7,8,9"
a,用分号把字符串切成字符串数组,遍历这个字符串数组
b,把每一个字符串元素再用,切
c,再遍历新切完这个数组
d,把这些单独元素通过数字字符串转成double数,存在double数组里
*/
public class Test3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "1,2;3,4,5;6,7,8,9";
String []arr = str.split(";");
String[][] arr2 = new String[arr.length][];
for (int i = 0; i < arr.length; i++) {
arr2[i] = arr[i].split(",");
}
/* for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
System.out.print(arr2[i][j]+ " ");
}
System.out.println();
}*/
double [][]arr3 = new double[arr.length][];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
arr3[i][j] = Double.parseDouble(arr2[i][j]);
}
}
}
}
复制代码
作者:
風諾
时间:
2013-12-10 21:32
double[][] arr3 = new double[arr.length][];
for (int i = 0; i < arr.length; i++) {
//缺少了这个定义arr3[i][j]就是不存在的
arr3[i] = new double[arr2[i].length];
for (int j = 0; j < arr2[i].length; j++) {
arr3[i][j] = Double.parseDouble(arr2[i][j]);
System.out.print(arr3[i][j] + "\t");
}
System.out.println();
}
复制代码
作者:
范二青年
时间:
2013-12-10 21:53
第28行 并没有指定二维数组第二维的长度 double [][]arr3 = new double[arr.length][];
这里应该是不行的,虽然编译器不报错,但是运行的时候调用arr3[0][0]时就会有空指针出现
个人想法是因为第二维并未申请到内存 所以指向了null
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2