2016-03-18 7 views
1

Ich weiß, dass es ganz für alle Beiträge ist Zeichen auf ganze Zahlen, Strings BigInteger -s, -s int zu BigInteger -s Umwandlung, ... aber ich kann einfach nicht herausfinden, warum dies nicht der Fall ist Arbeit.Convert Charakter 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))); 
    } 
} 

ich habe Scanner und BigInteger importiert. Die Eingangsdaten werden mit einer Anzahl von Linien aufgebaut, wie folgt aus: 7218904932283439201 \ n7218904932283439201 ...

Wenn ich das richtig verstanden, zusätzlich für BigInteger -s sollte wie folgt geschrieben werden: bigInteger1.add(bigInteger2), wobei beide Zahlen sind vom Typ BigInteger. Also soll ich diesen Charakter vom Typ umwandeln charint eingeben und dann konvertieren, dass int Wert BigInteger mit Methode BigInteger.valueOf(), die ein int Argument.

Der Fehler, den ich bekommen habe ist folgendes: incompatible types: int cannot be converted to BigInteger

Ich sehe nicht, wo ich falsch sein könnte, so würde ich schätzen, wenn jemand meinen Fehler hinweisen könnte.

+2

'BigInteger sum = 0 'ist nicht zulässig, da BigInteger ein Objekt ist. –

+0

Sie liegen falsch, wenn Sie nicht genug Aufmerksamkeit schenken. Der Java-Compiler ist wirklich gut darin, Ihnen zu sagen, was falsch ist. Es erfordert nur Disziplin auf der Leserseite. Bedeutung: Lesen Sie die Compiler-Nachrichten Wort für Wort; Am wichtigsten: Achten Sie auf die Zeilennummer, auf die es zeigt. Dann lesen Sie den Code auf dieser Zeile Wort für Wort. Lesen Sie die Fehlermeldung erneut. Wie in Ihrem Beispiel: Nehmen Sie nicht an, dass das Problem auf Zeichen beruht. Da die Nachricht eindeutig auf die BigInteger-Summe = 0-Linie hinweist ... – GhostCat

Antwort

5

Sie versuchen, ein int Literal einem Objekt BigInteger zuzuweisen.

BigInteger sum = 0; 

verwenden Sie stattdessen die folgenden

BigInteger sum = BigInteger.ZERO;