2016-03-18 9 views
1

文字を整数、文字列に変換するための投稿はすべてBigInteger -s、int -s〜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))); 
    } 
} 

私はScannerBigInteger輸入を持っています。入力されたデータは、このような数字、とのラインで構成されています7218904932283439201 \ n7218904932283439201 ...

私が正しく理解していれば、BigInteger -sの加算は次のように記述する必要があります。両方の数字はタイプBigIntegerであるbigInteger1.add(bigInteger2)、。だからタイプcharのその文字をタイプintに変換し、そのintの値をBigIntegerに変換して、BigInteger.valueOf()のメソッドをintとする必要があります。

私は取得していますエラーは以下の通りです:誰もが私の間違いを指摘することができれば、私は感謝して、私が間違っている可能性がどこincompatible types: int cannot be converted to BigInteger

私は見ていないのです。

+2

のBigIntegerがオブジェクトであるため、 'のBigInteger合計は= 0 '法的ではありません。 –

+0

十分な注意を払っていないのは間違っています。 Javaコンパイラは何が間違っているかを伝えるのに本当に良いです。それは読者の側でのみ規律を取る。意味:単語ごとにコンパイラのメッセージを読む。最も重要なこと:それが指している行番号に注意を払うこと。その行のコードを単語ごとに読みます。エラーメッセージをもう一度読んでください。あなたの例のように:問題は文字に関するものと仮定しないでください。メッセージがBigInteger sum = 0の行を明確に指摘しているので... – GhostCat

答えて

5

BigIntegerオブジェクトにintリテラルを割り当てようとしています。

BigInteger sum = 0; 

利用代わりに次の

BigInteger sum = BigInteger.ZERO;