我正在研究java中的一些项目.在这里,我坚持这个问题,无法弄清楚我哪里出错了.
我做了两个课:Test和Child.
当我运行代码时,我得到一个NullPointerException.
package com.test;
public class Test {
child newchild = new child();
public static void main(String[] args) {
new Test().method();
}
void method() {
String[] b;
b = newchild.main();
int i = 0;
while (i < b.length) {
System.out.println(b[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
package com.test;
public class child {
public String[] main() {
String[] a = null;
a[0] = "This";
a[1] = "is";
a[2] = "not";
a[3] = "working";
return a;
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 13
这是问题所在:
String[] a = null;
a[0]="This";
Run Code Online (Sandbox Code Playgroud)
您将立即尝试取消引用a(null),以便在其中设置元素.您需要初始化数组:
String[] a = new String[4];
a[0]="This";
Run Code Online (Sandbox Code Playgroud)
如果您在开始填充之前不知道您的集合应该有多少元素(通常即使你这样做),我建议使用List某种元素.例如:
List<String> a = new ArrayList<String>();
a.add("This");
a.add("is");
a.add("not");
a.add("working");
return a;
Run Code Online (Sandbox Code Playgroud)
请注意,这里有另一个问题:
int i=0;
while(i<b.length)
System.out.println(b[i]);
Run Code Online (Sandbox Code Playgroud)
你永远不会改变i,所以它总是 0 - 如果你完全进入while循环,你将永远不会离开它.你想要这样的东西:
for (int i = 0; i < b.length; i++)
{
System.out.println(b[i]);
}
Run Code Online (Sandbox Code Playgroud)
或更好:
for (String value : b)
{
System.out.println(value);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |