Может быть, этот вопрос глупый, но я новичок в Java, и я не могу понять это ...Проблемы с BigInteger в Java
Так у меня есть два clases - Digit и BigDigit и проблема здесь Digit2.sub(Digit1);
когда Digit1 отрицательна я получаю
исключения в потоке "основной" java.lang.NumberFormatException:. Нелегальный встроенный символ знак в java.math.BigInteger (Unknown Source)
, но когда я попытался пройти как утверждают nt не Digit1, но пример «-18370», тогда все в порядке, но в принципе это должно быть одинаково. Если это позитивно, все работает как шарм. Может ли кто-нибудь дать мне совет, где я ошибся? Метод 'add' работает все время, но 'sub' только с положительным Digit1.
ОБНОВЛЕНО Этот код работает, когда Digit1
является положительным или если uncomented Digit1.add(Digit2);
, то работает, когда сумма положительна. Но не отрицательный :(
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);}
}
Я думал, что ошибка означает, что у вас есть '-' в середине номера, а не в начале. Можете ли вы привести пример, который мы можем запустить? BTW Кажется, вам не нужно поле 'first' или' second', и вам не нужно хранить его как String. –
Ваш код работает для меня (я добавил отсутствующие 2 фигурные скобки, предположив, что они должны были быть 2 отдельными классами верхнего уровня) – Aaron
Как можно получить '-' в середине числа? –