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
。