2016-03-18 3 views
1

Я знаю, что есть довольно все сообщения для преобразования символов в целые числа, строки до BigInteger -s, int -s to BigInteger -s, ... но я просто не могу понять, почему это не так Работа.Преобразование символа в BigInteger

Scanner sc = new Scanner(System.in); 

BigInteger sum = 0; 
String line = ""; 
while (sc.hasNext()) { 
line = sc.next(); 
for (char character: vrstica.toCharArray()) { 
    sum = sum.add(BigInteger.valueOf(Character.getNumericValue(character))); 
    } 
} 

У меня есть Scanner и BigInteger импортированы. Входные данные построены из строк с номерами, например: 7218904932283439201 \ n7218904932283439201 ...

Если я правильно понимаю, дополнение для BigInteger -s должно быть написано так: bigInteger1.add(bigInteger2), где оба номера типа BigInteger. Поэтому я должен преобразовать этот символ типа char в тип int, а затем преобразовать это значение int в BigInteger с использованием метода BigInteger.valueOf(), который принимает аргумент int.

Ошибка я получаю следующее: incompatible types: int cannot be converted to BigInteger

я не вижу, где я мог бы быть неправильно, поэтому я был бы признателен, если кто-то может указать на мою ошибку.

+2

'BigInteger сумма = 0 'не является законной, поскольку BigInteger является объектом. –

+0

Вы ошибаетесь, не уделяя достаточного внимания. Компилятор java действительно хорош, говоря вам, что не так. Это требует только дисциплины со стороны читателя. Значение: читать сообщения компилятора слово за словом; самое главное: обратите внимание на номер строки, на которую он указывает. Затем прочитайте код на этой строке слово за словом. Прочтите сообщение об ошибке еще раз. Как и в вашем примере: не предполагайте, что проблема связана с персонажами. Поскольку сообщение ясно указывает на строку BigInteger sum = 0 ... – GhostCat

ответ

5

Вы пытаетесь назначить литерал int объекту BigInteger.

BigInteger sum = 0; 

Используйте вместо следующего

BigInteger sum = BigInteger.ZERO; 
Смежные вопросы