0

这是什么意思?

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 提供的链接,应该没有问题。

4

5 回答 5

3

让我们来看看。

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

首先,让我们打开BigDecimal API

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

意味着您的代码在其主执行线程上引发了异常。异常类型为NumberFormatException,并在 BigDecimal 中引发

让我们看看 API 对此有何评论:

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

(in 是输入字符数组)。

因此,此异常意味着您正在创建具有无效值的 BigDecimal。检查构造 BigDecimal 的代码。BigDecimal 上还有许多其他构造函数,您会根据在那里使用的重载找到原因。

于 2013-05-23T03:56:17.930 回答
0

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

正如您所说,代码没有任何问题,也没有理由怀疑编译器没有给您错误。

根据你给它的输入,你有一个运行时错误,所以输入有问题。

于 2013-05-23T05:27:50.423 回答
0

文档声明NumberFormatException如果输入字符串不是 a 的有效表示,则会抛出 a BigDecimal... 因此检查创建的代码BigDecimal是一个很好的起点。

于 2013-05-23T03:57:53.573 回答
0

如果您收到一个使用它的值,则将其转换为 BigDecimal。例如: String receiveValue = request.getParameter("xxx"); BigDecimal bigDecimal = new BigDecimal(receiveValue);

但问题是receiveValue 是null 或空白值,所以它发布了这个问题。

于 2013-05-23T04:05:59.147 回答
0

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

于 2021-02-25T12:33:32.140 回答