我是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)。 ??
答案 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。