Java Scanner nextLong

时间:2013-10-07 14:21:48

标签: java java.util.scanner

Stackoverflow,你好。 我在理解这段代码的输出时遇到了问题

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,

3 个答案:

答案 0 :(得分:3)

Scanner#nextLong()不解析Long文字,它会将数字解析为长数,因此无法在3L找到一个并退出循环,即。 hasNextLong()返回false

注意javadoc

  

将输入的下一个标记扫描为long。

在这种情况下,下一个标记为3L,并且不会解析为Long。试试吧

Long.parseLong("3L");

会给你一个NumberFormatException

答案 1 :(得分:1)

直接来自javadoc api:如果使用nextLong方法将此扫描器输入中的下一个标记解释为默认基数中的long值,则返回true。扫描仪不会超过任何输入。

答案 2 :(得分:0)

问题出在3L 62D,尝试将输入修改为:

String context = "0100 55 127 3L 62D  6F (int)7";

比输出将是:100,55,127