我正在尝试使用Integer.parseInt()
方法将String转换为Integer,如下所示:
public Job[] convertStringListToIntegerList(
Integer noOfJobs, List<String> numbersListAsStrings) {
Job[] integerList = new Job[noOfJobs];
int i = 0;
for (String s : numbersListAsStrings) {
String[] jobWeightLength = s.split(" ");
integerList[i].weight = Integer.parseInt(jobWeightLength[0]);
integerList[i].length = Integer.parseInt(jobWeightLength[1]);
i++;
}
return integerList;
}
此处Job
的定义如下:
public class Job {
Integer length;
Integer weight;
Integer difference;
Float ratio;
}
我提到了这个问题:
但是,正如您所看到的,我用来存储Integer.parseInt()
结果的变量是Integer
,而不是int
,但却得到NullPointerException
:
integerList[i].weight = Integer.parseInt(jobWeightLength[0]);
请指点我这里出了什么问题?
答案 0 :(得分:2)
您需要先创建Job类的实例,然后才能分配到其字段
for (String s : numbersListAsStrings) {
String[] jobWeightLength = s.split(" ");
integerList[i] = new Job();
// ...
答案 1 :(得分:2)
尝试使用循环而不是你拥有的循环。
for (String s : numbersListAsStrings) {
String[] jobWeightLength = s.split(" ");
integerList[i]=new Job();
integerList[i].weight = Integer.parseInt(jobWeightLength[0]);
integerList[i].length = Integer.parseInt(jobWeightLength[1]);
i++;
}
这可以解决您的问题。
答案 2 :(得分:1)
integerList[i]
为空。 integerList[i].weight
引用了weight
null
的{{1}}字段。在使用之前,您应该使用Job
对象填充integerList
。
请参阅:
new Job()
答案 3 :(得分:0)
public Job[] convertStringListToIntegerList(
Integer noOfJobs, List<String> numbersListAsStrings) {
int size = Math.min(noOfJobs, numbersListAsStrings.length());
Job[] integerList = new Job[size];
for (int i = 0; i < size; i++) {
String[] jobWeightLength = numbersListAsStrings.get(i).split(" ");
integerList[i] = new Job();
integerList[i].weight = Integer.parseInt(jobWeightLength[0]);
integerList[i].length = Integer.parseInt(jobWeightLength[1]);
}
return integerList;
}