【问题标题】:Explanation of NullPointerException [duplicate]NullPointerException 的解释 [重复]
【发布时间】:2014-11-07 01:31:54
【问题描述】:

首先,我在 Stackoverflow 上研究了我的问题,并找到了关于 NullPointerException 是什么的答案。但是,我不明白为什么我有一个NullPointerException

此代码创建一个简单的成绩跟踪程序。以下是数据字段:

private String name;
private double[] testScores; //relevant to question  
private int x = 0;
private String answer;
private double testAverage;
private double tScore;//Relevant to question

所以Exception 是在Student 对象调用此方法时发生的。在我用方法定义中的数组注释掉该行之后,Exception 不再出现。我用double tScore 替换了数组,程序开始正常工作。我不明白为什么使用数组给了我NullPointerException。请帮助我,我对这个问题感到很困惑。我试图弄清楚,但不明白为什么会这样。感谢您的帮助。

public void inputGrades()
  {
       Scanner gradeRead = new Scanner(System.in);
       System.out.println("Please Enter Student Grades.");

       do
       { 
           //testScores[x] = gradeRead.nextDouble(); ---Problem Line---
           tScore = (gradeRead.nextDouble());
           System.out.println("Are There Any More Grades? Enter y or n");
           answer = gradeRead.next();
           x++;
       }
       while(answer.equalsIgnoreCase("Y"));
  }

【问题讨论】:

  • 在这种情况下,arraylist 比 array 更好
  • @SotiriosDelimanolis 到底是什么人?我已经告诉过你我做了我的研究,但我发现毫无疑问与数组和数据字段有关。帮我一个忙,把重复的标记去掉,这样我就能得到一些答案。
  • @fastsnail 什么是数组列表?我是一名高中生,刚接触java。我从未听说过数组列表。
  • 如果您阅读副本,您会了解到 NullPointerException 的出现是出于一个原因,即取消引用 null 值。所以在你的场景中必须有null。那是testScores。在这种情况下,链接的重复问题/答案是规范问题/答案。别人调试一个人的问题很少有用。了解导致 NPE 的原因以及如何处理它会更有用。 给一个人一条鱼,他会吃一天。授人以渔,食其一生。
  • 将问题标记为重复不会使问题不好

标签: java arrays nullpointerexception double java.util.scanner


【解决方案1】:

您刚刚声明了数组,但从未像这里提到的那样对其进行初始化:

private double[] testScores; //relevant to question  

您需要在访问其元素之前对其进行初始化。比如:

   testScores = new double[SIZE_YOU_DESIRE];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多