2016-03-18 20 views
1

Karakterleri tamsayıya çeviren yayınların tümü için BigInteger -s, int -s - BigInteger -s dizinlerinin tamamının bulunduğunu biliyorum, ancak bunun neden olmadığını anlayamıyorum iş.Karakteri BigInteger konumuna dönüştürün

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))); 
    } 
} 

Ben Scanner ve BigInteger ithal var. giriş verileri bu gibi sayılarla hatlarının inşa edilmiştir:

Eğer doğru anlamak

, BigInteger -s için ilave böyle yazılmalıdır 7218904932283439201 ... n7218904932283439201 \: Her iki numaralar tip BigInteger vardır bigInteger1.add(bigInteger2). Bu nedenle, char türünün bu karakterini int yazıp int değerini BigInteger değerini yöntemine dönüştürmeliyim; bu yöntem int argümanını alır.

alıyorum hatadır aşağıdaki: herkes hatamı işaret olabilir ben takdir ediyorum bu yüzden yanlış olabilir nereye incompatible types: int cannot be converted to BigInteger

ben görmüyorum.

+2

'BigInteger toplamı = 0' yasal değildir. –

+0

Yeterli dikkat etmediğinizde yanılıyorsunuz. Java derleyicisi size neyin yanlış olduğunu söylemede gerçekten iyidir. Sadece okuyucu tarafında disiplin gerektirir. Anlamı: derleyici mesajları kelimesini kelimeye göre okuyun; en önemlisi: işaret ettiği satır numarasına dikkat edin. Daha sonra bu satırdaki kelimeyi kelimelere göre okuyun. Hata mesajını tekrar okuyun. Örneğinizde olduğu gibi: problemin karakterlerle ilgili olduğunu varsaymayın. Mesaj açıkça BigInteger toplamına = 0 satırını işaret ediyor ... – GhostCat

cevap

5

BigInteger nesnesine int literal atamaya çalışıyorsunuz. BigInteger bir nesne olduğu için

BigInteger sum = 0; 

Kullanım yerine aşağıdaki

BigInteger sum = BigInteger.ZERO;