也许这个问题很愚蠢,但我是Java新手,我无法弄清楚......
所以我有两个分类 - Digit 和 BigDigit,Digit2.sub(Digit1);
当 Digit1 为负时,问题就在这里
线程“主”java.lang.NumberFormatException 中的异常:java.math.BigInteger 处的非法嵌入符号字符。(未知来源)
但是当我尝试传递参数不是Digit1,而是示例“-18370”时,一切正常,但基本上应该是一样的。如果它是积极的,那么一切都像一个魅力。谁能给我一个提示我哪里出错了?方法 'add' 一直有效,但 'sub' 仅适用于正数 1。
更新
此代码在Digit1
为正或未注释时有效Digit1.add( Digit2);
,然后在 sum 为正时有效。但不是负面的:(
import java.math.BigInteger;
public class Digit {
public static void main(String[] args)
{
BigDigit Digit1 = new BigDigit("-18730");
BigDigit Digit2 = new BigDigit("77730");
// Digit1.add( Digit2);
Digit1.display();
Digit1.reverse();
Digit1.display();
Digit2.sub( Digit1);
Digit2.display();
Digit2.reverse();
Digit2.display();
}
}
class BigDigit {
public String number;
public BigInteger first;
public BigInteger second;
public BigDigit(String str) {number = str;}
public String add(BigDigit sk) {
first = new BigInteger(number);
second = new BigInteger(sk.number);
return number = first.add(second).toString();
}
public String reverse() {
return number = new StringBuffer(number).reverse().toString();
}
public void sub(BigDigit sk) {
first = new BigInteger(number);
second = new BigInteger(sk.number);
}
public void display() {System.out.println(number);}
}