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文字,它将数字解析为 longs,因此它无法在 at 找到一个3L并退出循环,即。hasNextLong()返回false

注意javadoc

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

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

Long.parseLong("3L");

会给你一个NumberFormatException

于 2013-10-07T14:23:50.897 回答
1

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

于 2013-10-07T14:27:15.320 回答
0

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

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

输出将是:100、55、127

于 2013-10-07T14:29:30.253 回答