【问题标题】:Nullpointerexception when using parseDouble使用 parseDouble 时出现空指针异常
【发布时间】:2014-11-03 19:46:48
【问题描述】:

我已经为此苦苦思索了一段时间......不知道该怎么办。

String tempprice = null;
String findPriceCommand = "SELECT sellingprice FROM `item` WHERE itemNo = '" + itemNo + "'";
try 
{
    tempprice = viewValue(conn, findPriceCommand);
}
catch (SQLException e) 
{
     e.printStackTrace();
}
Double price = Double.parseDouble(tempprice);
Double temp = (quantity.get(count) * price);
finalprice.add(temp);

我正在尝试使用 itemNo 从数据库中获取价格。由于我将此值作为字符串值获取,因此我使用Double price = Double.parseDouble(tempprice); 将其更改为双精度值。 在我将finalprice 变成ArrayList 之前,这一切都奏效了(这样我就可以一次插入多个值……(上面给出的代码是循环的一部分……)无论如何,现在我得到了NullPointerException

像这样:

    int count = 0;
       if (action.getSource() == btnAdd)
       {
        //other ArrayList variables 
        ArrayList<Integer> quantity = new ArrayList<Integer>();
        ArrayList<Double> finalprice = new ArrayList<Double>();
        //.....previous code...

        count++;
       }

知道我在这里缺少什么吗? :/

【问题讨论】:

  • tempprice 为空,这就是为什么你得到一个 NullPointerException
  • 代码中的循环在哪里?
  • 你需要开始使用调试器
  • 根据documentation,您会在Double.parseDouble(anything) 上获得NPE 的原因只有一个——那就是anything 是null。所以找出原因。你没有发布足够的信息让我们找到。您的堆栈跟踪会准确地告诉您错误在哪里,并且只有少数情况会导致 NPE。你错过的是对你的错误的基本分析和对可能原因的推断。
  • @ShifaTsar 另一种选择是正确设计您的程序。 tempprice 是null 的唯一方法是viewValue 返回null 或抛出异常。在这两种情况下,尽管viewValue 失败,您为什么还要继续尝试解析它?如果viewValue 在某些情况下应该返回null,您需要相应地处理它(例如if (tempprice == null))。适当地处理您的错误情况。

标签: java loops arraylist double


【解决方案1】:

查看 API 文档:

http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#parseDouble%28java.lang.String%29

它表示 Double.parseDouble(String s) 在 s 为 NULL 时会抛出 NullPointerException。

只是一个提示。当您收到任何异常时,请查看堆栈跟踪。它将向您准确显示您的 NullPointerException 异常首先出现的位置。从那里开始,只需一小步就可以看出问题出在您的 tempprice 变量的某个地方。使用调试器并单步执行您的代码以检查 tempprice 为 NULL 的原因。

【讨论】:

  • 谢谢,我会通读调试教程.. 从来没有真正打扰过。
  • @ShifaTsar:这是使用 Eclipse 进行调试的一个很好的介绍:vogella.com/tutorials/EclipseDebugging/article.html 如果您对编程非常感兴趣,了解您的调试器是必须的,因为这将帮助您开发更好的模型进入你的程序。祝你好运!
猜你喜欢
  • 2020-03-21
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多