Java中的BigInteger问题
也许这个问题很傻,但我是Java新手,我想不出这个问题 所以我有两个类别-数字和大数字,问题是这里Java中的BigInteger问题,java,biginteger,Java,Biginteger,也许这个问题很傻,但我是Java新手,我想不出这个问题 所以我有两个类别-数字和大数字,问题是这里Digit2.sub(Digit1)当Digit1为负数时,我得到 线程“main”java.lang.NumberFormatException中的异常:非法嵌入符号字符 位于java.math.biginger。(未知源) 但当我尝试将pass作为参数而不是Digit1,而是示例“-18370”时,一切都正常,但基本上应该是一样的。如果它是积极的,一切都像一个魅力。谁能告诉我哪里出了问题吗?方法
Digit2.sub(Digit1)代码>当Digit1为负数时,我得到
线程“main”java.lang.NumberFormatException中的异常:非法嵌入符号字符
位于java.math.biginger。(未知源)
但当我尝试将pass作为参数而不是Digit1,而是示例“-18370”时,一切都正常,但基本上应该是一样的。如果它是积极的,一切都像一个魅力。谁能告诉我哪里出了问题吗?方法“add”始终有效,但“sub”仅适用于正数1
已更新
当Digit1
为正数或未注释Digit1.add(Digit2)时,此代码起作用代码>,然后在总和为正时工作。但不是消极的:(
问题是您试图用无效数字(03781-
)构造一个biginger
。此字符串是通过在reverse
方法中反转-18730
创建的
这是打印时不添加的内容:
C:\>java Digit
-18730
03781-
Exception in thread "main" java.lang.NumberFormatException: Illegal embedded sign character
at java.math.BigInteger.<init>(Unknown Source)
at java.math.BigInteger.<init>(Unknown Source)
at BigDigit.sub(Digit.java:42)
at Digit.main(Digit.java:15)
反转正整数(59000
)不会留下嵌入的减号(00095
)我认为错误意味着你在号码中间有一个<代码> ->代码>你可以提供一个我们可以运行的例子吗?顺便说一下,你不需要一个<代码>第一个<代码>或<代码>第二个/代码>字段,也不需要把它存储为一个字符串。你的代码对我来说是有效的。(我添加了丢失的2个括号,假设它们应该是2个独立的顶级类)怎么可能在数字的中间得到<代码> ->代码?你救了我的天!这么愚蠢的错误,我试图找出问题。
C:\>java Digit
-18730
03781-
Exception in thread "main" java.lang.NumberFormatException: Illegal embedded sign character
at java.math.BigInteger.<init>(Unknown Source)
at java.math.BigInteger.<init>(Unknown Source)
at BigDigit.sub(Digit.java:42)
at Digit.main(Digit.java:15)
C:\>java Digit
59000
00095
77730
03777