1

スタックオーバーフローさん、こんにちは。このコードへの出力を理解するのに問題があります

public static void main (String[] args)
{
    String context = "0100 55 3L 62D 127 6F (int)7";
    Scanner s = new Scanner(context);
    while(s.hasNextLong()) {
        System.out.print(s.nextLong() + ",");
    }
}

出力は次のとおりですが、出力に含まれていない100,55, 理由がわかりませんか? 127なぜ出力が似ていないの100,55,127,ですか?

4

3 に答える 3

3

Scanner#nextLong()リテラルを解析せずLong、数値を long として解析するため、 at を見つけることができず3L、ループを終了します。hasNextLong()戻りますfalse

javadoc に注意してください

入力の次のトークンを long としてスキャンします。

この場合、次のトークンは3Land であり、それは a に解析されませんLong。それを試してみてください

Long.parseLong("3L");

を与えますNumberFormatException

于 2013-10-07T14:23:50.897 に答える
1

javadoc api から直接: このスキャナの入力の次のトークンが、nextLong メソッドを使用してデフォルト基数の long 値として解釈できる場合は、true を返します。スキャナは入力を超えて進みません。

于 2013-10-07T14:27:15.320 に答える