0

Javaで次のコードを実行すると:

import java.util.*;
class Solution{
    public static void main(String []argh)
    {
        Scanner sc = new Scanner(System.in);
        try{
            long x=sc.nextLong();
            System.out.println(x);
        }
        catch(Exception e){
            System.out.println(sc.next()+" can't be fitted anywhere.");
        }
       sc.close();
   }

}

入力を「23333333333333333333333333333333333333」と入力すると、次の出力が得られます。

23333333333333333333333333333333333333333 can't be fitted anywhere.

sc.nextLong()スローされた場合、catch ブロックの は、try ブロックに入力された値とまったく同じ値をInputMismatchExceptionどのように取得しますか? ここでconsoleenterコードからの入力を求めるべきではありませんか?sc.next()sc.nextLong()

4

2 に答える 2

3

long の最大値は です9223372036854775807。あなたの数値はそれより大きいです。を使ってみてくださいBigIntegernext()数値をStringとして受け取るため、何でも受け入れることができます。next()その値はまだストリームに存在するため、その値を取得することに注意してください。

于 2015-09-18T08:25:39.707 に答える
2

あなたの質問はデータ型ではなく、最大値であり、Scanner. もしそうなら、スキャナーAPIはこれについて言及しています:

スキャナーが InputMismatchException をスローすると、スキャナーは例外の原因となったトークンを渡さないため、他の方法でトークンを取得またはスキップできます。

次の場合でも、スキャナーはストリームからの利用可能な入力を処理できます。InputMismatchException

于 2015-09-18T08:31:17.347 に答える