扫描器类中的next()vs nextLIne()

时间:2019-05-15 15:44:31

标签: java

我正在读一个数字,然后是一个字符串,然后比较该字符串。 效果很好:

    int num = sc.nextInt();
    String S = sc.next();
    if (S.equals("TEST")){
    //do something
    }

在给i / p说5 TEST时,程序进入if部分。

但是如果我改用.nextLine(),即

    int num = sc.nextInt();
    String S = sc.nextLine();
    if (S.equals("TEST")){
    //do something
    }

它不起作用。对于相同的输入(5个TEST),它将不执行if部分。

我知道.next()读取直到第一个空格,.nextLine()读取直到遇到“ \ n”。这两个都返回相同的字符串,那么这里出了什么问题?

编辑:发现.nextLine()正在读取字符串以及前面的空白。为什么? .nextInt()函数是否将光标返回到遇到定界符之前的点?

1 个答案:

答案 0 :(得分:0)

很简单: next()使用定界符模式返回下一个标记,默认情况下,该定界符与空格匹配(因此消除空白,因为有分隔符),而不是nextLine()从当前光标位置读取到行尾。