原题目如下:
..]
就是让你把一个字符串切掉,然后切掉之后再切掉,然后返回一个二维数组。
以下是我写的代码:
public class Test {
public static void main(String[] args) {
Test test = new Test();
String abc = "1,2;3,4,5;6,7,8";
System.out.println(test.calculate(abc));
}
public String[][] calculate(String s) { //定义切字符串的方法
String[][] calculated = null; //先定义一个二维数组
String[] tempOuter = s.split(";"); //第一次,按照分号切割,然后放入外层一维数组
for (int i = 0; i < tempOuter.length; i++) { //把切好的一维数组循环拿出来一次
String[] tempInner = tempOuter[i].split(","); //每次拿出来里面的字符串再次切割,然后装到内层一维数组中
for (int j = 0; j < tempInner.length; j++) { //循环内层一维数组,把每一个最小的字符串拿出来
calculated[i][j] = tempInner[j]; //把每一个字符串依次装入一开始声明的二维数组当中
}
}
return calculated;
}
}
运行结果如下:
总是说我空指针异常,这个程序到底错在哪儿呢? 我觉得我逻辑没问题啊。
我思考了下,把代码改成了这样,结果还是错的:
public class Test {
public static void main(String[] args) {
Test test = new Test();
String abc = "1,2;3,4,5;6,7,8";
System.out.println(test.calculate(abc));
}
public String[][] calculate(String s) { //定义切字符串的方法
String[][] calculated = null; //先定义一个二维数组
String[] tempOuter = s.split(";"); //第一次,按照分号切割,然后放入外层一维数组
for (int i = 0; i < tempOuter.length; i++) { //把切好的一维数组循环拿出来一次
String[] tempInner = tempOuter[i].split(","); //每次拿出来里面的字符串再次切割,然后装到内层一维数组中
calculated[i] = tempInner;
}
return calculated;
}
}
到底错在哪儿呢?
calculated一直为空,而且数组是不能扩容的;
可以把calculated定义成list