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,

最佳答案

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

注意javadoc


  将输入内容的下一个标记扫描较长。


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

Long.parseLong("3L");


将给您NumberFormatException

09-25 21:22