我即将开一个关于解析的课程,这是我的代码的一部分。
public class Parsing {
//some other atributes here
public class Pack {
String type;
int[] brand;
int total;
}
Pack[] v = new Pack[25];
public void setpackType(int a, String b) {
v[a].type = b;
}
public String getpackType(int a) {
return v[a].type;
}
public int getpackTotal(int a) {
return v[a].total;
}
public void setpackTotal(int a, int b) {
v[a].total = b;
}
public void setpackBrand(int a, int b, int c) {
v[a].brand[b] = c;
}
和
public final void process(String s) throws FileNotFoundException {
Scanner scanner;
scanner = new Scanner(new File(s));
try {
if (scanner.hasNext()) {
int y = scanner.nextInt();
int i = 1;
while (i <= y) {
v[i] = new Pack();
setpackType(i, scanner.next());
setpackTotal(i, scanner.nextInt();
int k = 0;
while (k < hh) {
setpackBrand(i, k, scanner.nextInt());
k++;
}
i++;
}
}
} finally{
scanner.close();
}
}
}
编译时没有错误但是当我试图运行时,我得到了这个:
Exception in thread "main" java.lang.NullPointerException
at Parsing.setpackTotal(Parsing.java:112)
at Parsing.process(Parsing.java:153)
at Parsing.main(Parsing.java:202)
我已经逐行测试了。 setpackType
效果很好!
但我不明白为什么setpackTotal
和setpackBrand
无效。
非常感谢您的帮助:)
答案 0 :(得分:2)
Java中的数组是零索引,尝试将i
方法中的process
变量更改为从0
开始:
int i = 0;
while ( ... ) {
...
i++;
}
答案 1 :(得分:0)
忽略这里缺少)
:
setpackTotal(i, scanner.nextInt();
由于NullPointerException
。
scanner.nextInt()
尝试调试scanner
以解决问题。
此外,Peter's answer解决了部分问题。
答案 2 :(得分:-1)
您需要将setpackTotal()
更改为:
public void setpackTotal(int a, int b) {
v[a] = new Pack();
v[a].total=b;
}