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,
?
答案 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