2016-12-03 2 views
-3

こんにちは、事前のおかげで、Scanner.hasNextLongエラー

私はここでjava.util.Scannerに問題を抱えているが、私のコードです:

public static void ScanInput(String Choice) { 

    if(scanner.hasNextLong()){ 

     long input = scanner.nextLong(); 
     long length = String.valueOf(input).length(); 

     if(length <= 10){ 

      if(Choice == Choice1){ 

       Converter.Decimal(input); 

      } else if(Choice == Choice2) { 

       Converter.Binary(input); 

      } 
     } else { 

      System.out.println(error); 

      scanner.close(); 

      ScanInput(DecimalToBinary.choice); 
     } 


    } else { 

     System.out.println(error); 

     scanner.close(); 

     ScanInput(DecimalToBinary.choice); 

    } 

    scanner.close(); 
} 

これを使用することは本当に問題ではありません。問題は、10桁を超える値を入力するとクラッシュするということです。だから私はintまたはそれを使用しているようだ??

(intの最大サイズのため)

が、私は長い間使用....

マイデバッグインストラクターポイント(scanner.hasNextLong()){

そして、それはまた、物事がたわごとに行く場所ですか。 .. 助けてください!

+2

* 10桁以上*どのくらい正確ですか? – Tunaki

答えて

1

値は9223372036854775807(長いためMAX値)よりも大きい場合、このような何か、BigIntegerを使用:どうやらあなたの長い入力がないよう

if (scanner.hasNextBigInteger()) { 
    BigInteger big = scanner.nextBigInteger(); 
} 

は今コンパイラが整数として、あなたの入力を処理しています接尾辞Lを付けてください。LでのJavaの長い終わりに、例えば:

long lg = 24863512789L; 

これを修正しても問題ありません。

+0

ポイントは...それはそれより大きいわけではありません....だから私はなぜ長く動かないのか分かりません。 – Neriesta

+0

スキャナを初期化することができません。スキャナスキャナ=新しいスキャナ(System.in); –

+0

入力が10桁未満の場合は機能しますか? –

関連する問題