这样不可以吗??
package one;
public class One extends Exception {
static String[] a = null;
public static void main(String[] args) {
// TODO 自动生成的方法存根
two(a);
}
public static void two(String[] a) {
for (int i = 0; i < 5; ++i) {
a[i] = new String();
}
for (int k = 0; k < 5; ++k) {
String h = tostring(k);
a[k] = h;
}
}
private static String tostring(int k) {
// TODO 自动生成的方法存根
String s = "k";
return s;
}
}
求大神指点??
String[] a = null
,然后你将a
传入two()
,而在two()
中并没有检查a
是否为null
,也没有对其进行初始化就直接使用了a[i]
,所以肯定是空指针异常。two()
在这里从逻辑上判断应该是对a
进行初始化,那其实可以在一开始加上a = new String[5]
(根据循环判断容量是 5。或者可以加个逻辑判断在a
为null
的时候初始化为5
。另外,没有必要先初始化为一个空字符串再对其赋值,所以第一个使用
i
作为循环变更的循环是多余的,除了浪费堆空间,什么作用都没有。还有第二个循环中的
h
作为一个中间变量,在这里也是完全不需要的,直接对a[k]
赋值tostring()
的结果就好。tostring(k)
中的参数k
在代码中完全没起到作用,如果你代码中的"k"
本意是想把k
转换成字符串,应该使用Integer.toString(k)
。最后还要提的是,注意命名语义化,比如
two()
其实似乎应该命名为init()
或initilize()
。