如何在java中使用hasNext()函数

时间:2018-01-03 08:37:42

标签: java function token

我是Java中的一个基本步骤的菜鸟。我在CoreJava教科书和这个在线网站上找到了文档:https://www.tutorialspoint.com/java/util/scanner_hasnext.htm 作者提到了令牌,我无法理解。此外,我仍然觉得模糊这个功能的主要影响是模糊的。 以下是网站上的代码:

package com.tutorialspoint;    
import java.util.*;
import java.util.regex.Pattern;

public class ScannerDemo {
   public static void main(String[] args) {

      String s = "Hello World! 3 + 3.0 = 6";

      // create a new scanner with the specified String Object
      Scanner scanner = new Scanner(s);

      // check if the scanner has a token
      System.out.println("" + scanner.hasNext());

      // print the rest of the string
      System.out.println("" + scanner.nextLine());

      // check if the scanner has a token after printing the line
      System.out.println("" + scanner.hasNext());

      // close the scanner
      scanner.close();
   }
}

我不明白为什么它与

的第一行有所不同

System.out.println("" + scanner.hasNext());

和第二个,但结果不同(true to false)。 ??

3 个答案:

答案 0 :(得分:0)

when criteria query will fire multiple queries to fetch childrens?函数告诉:你有一个令牌(在你的情况下,你有一个字符串)。

当您第一次调用hasNext()时,它返回true(因为您在hasNext()对象中链接了字符串)。

使用scanner时,在输出中表示字符串s,因此scanner对象不再有其他标记(字符串),因此在第二次调用nextLine时返回false。

答案 1 :(得分:0)

Scanner将处理输入。在这种情况下,检查hasNext输入字符串中是否有东西要读取。因为你没有处理任何事情,所以答案是真的。 使用nextLine()消费输入后,没有任何内容可供您的扫描仪使用者处理。 然后,hasNext()回答错误。

答案 2 :(得分:0)

令牌只是使用分隔符模式拆分的扫描仪输入(默认为我相信的空格)。

第一次输出true,因为有一个输入(即hasNext()正在执行它在锡上所说的内容,有输入)< / p>

然后使用nextLine()

打印该行

当您尝试再次调用hasNext()时,它是错误的,因为基本上您已经在print语句中使用了一行文本(在您的情况下只有一行),因此没有更多输入因此hasNext()是假的。

来自文档:

hasNext()

  

如果此扫描器的输入中有另一个标记,则返回true。

hasNextLine()

  

如果此扫描仪的输入中有另一行,则返回true。