使用parseInt将String转换为Integer将返回NPE

时间:2014-07-05 10:24:24

标签: java nullpointerexception

我正在尝试使用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]);

请指点我这里出了什么问题?

4 个答案:

答案 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;
}