首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空指针异常?

空指针异常?
EN

Stack Overflow用户
提问于 2013-10-29 14:08:07
回答 3查看 183关注 0票数 3

为什么我要用这个代码得到一个NullPointerException呢?

代码语言:javascript
复制
public static void main(String args[]) throws FileNotFoundException {

    int i = 0;
    Job[] job = new Job[100];
    File f = new File("Jobs.txt");
    Scanner input = new Scanner(f);

    while (input.hasNextInt()) {
        job[i].start = input.nextInt();
        job[i].end = input.nextInt();
        job[i].weight = input.nextInt();
        i++;
    }
}

在while循环的第一行,我得到了它的第一次遍历错误。我还有一个单独的课程:

代码语言:javascript
复制
public class Job {
    public int start, end, weight;
}

以及文本文件:

代码语言:javascript
复制
0 3 3
1 4 2
0 5 4
3 6 1
4 7 2
3 9 5
5 10 2
8 10 1

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-29 14:09:14

NullPointerException

在需要对象的情况下,应用程序尝试使用null时引发。其中包括:

  • 调用空对象的实例方法。
  • 访问或修改空对象的字段。
  • 取null的长度,就好像它是一个数组。
  • 访问或修改空槽,就好像它是一个数组一样。
  • 抛出空,就好像它是一个可抛出的值。 Job[] job =新Job100;

到目前为止,数组中的所有值都是null。因为您没有在其中插入任何作业对象。

代码语言:javascript
复制
  job[i].start = input.nextInt(); // job[i]  is null.

您所要做的就是初始化一个新的Job对象并将其分配给当前的index

变成,

代码语言:javascript
复制
while (input.hasNextInt()) {
        Job job = new Job(); 
        job.start = input.nextInt();
        job.end = input.nextInt();
        job.weight = input.nextInt();
        job[i] =job;
        i++;
    }
票数 8
EN

Stack Overflow用户

发布于 2013-10-29 14:11:59

请参阅4.12.5. Initial Values of Variables

对于所有引用类型(§4.3),默认值为null

您需要在尝试访问job数组之前初始化它,现在它就像编写null.start,这当然会导致NullPointerException

票数 5
EN

Stack Overflow用户

发布于 2013-10-29 14:09:23

您刚刚初始化了一个Job类型的数组,没有初始化数组中的每个元素,因此出现了异常。

代码语言:javascript
复制
 while (input.hasNextInt()) {
        job[i] = new Job(); // initialize here
        job[i].start = input.nextInt();
        job[i].end = input.nextInt();
        job[i].weight = input.nextInt();
        i++;
    }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19660555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档