BigDecimal Exception消息

时间:2013-05-23 03:52:02

标签: java bigdecimal

这意味着什么?

Exception in thread "main" java.lang.NumberFormatException
java.math.BigDecimal.<init>(Unknown Source)

但是当我点击导致问题的那一行时,没有警告也没有错误。那么,我该如何解决这个问题呢?我的代码仍然运行良好,但我无能为力,为什么我的控制台显示。

编辑2

我可以展示这么多代码,希望你能理解。

byte[] c = new byte[13];
System.arraycopy(buf, pos, c, 0, 10);
System.arraycopy(buf, pos + 10, c, 11, 2);
c[10] = '.';
return new IsoValue(type, new BigDecimal(new String(c)), null);

根据@Benjamin给出的链接,它应该没有问题。

5 个答案:

答案 0 :(得分:2)

让我们看看。

了解异常的最简单方法是检查API,

首先,让我们打开the BigDecimal API

Exception in thread "main" java.lang.NumberFormatException
java.math.BigDecimal.<init>(Unknown Source)

表示您的代码在其主执行线程上引发了异常。异常是类型NumberFormatException,它在BigDecimal

中抛出

让我们看看API对此有何看法:

  

抛出:   NumberFormatException - 如果in不是BigDecimal的有效表示。

(在输入字符数组中)。

因此,此异常意味着您正在创建具有无效值的BigDecimal。检查构造BigDecimal的代码。 BigDecimal上还有一堆其他构造函数,你会发现原因取决于你在那里使用的重载。

答案 1 :(得分:0)

如果输入String不是NumberFormatException的有效表示,则文档声明将抛出BigDecimal ...因此检查创建BigDecimal的代码是好的开始的地方。

答案 2 :(得分:0)

如果您收到使用它的值转换为BigDecimal。 例如: String receiveValue = request.getParameter(“xxx”); BigDecimal bigDecimal = new BigDecimal(receiveValue);

但问题是receiveValue为null或空值,因此它会发布此问题。

答案 3 :(得分:0)

错误消息告诉您byte[]的内容不是可以解码的文本的数字。

你说的代码没有任何问题,没有理由怀疑编译器没有给你一个错误。

根据您提供的输入,您有运行时错误,因此输入存在问题。

答案 4 :(得分:0)

您可能还会在字符串中看到一些可能导致 NumberFormatException 的空格。修剪字符串。