对于扫描仪对象,该hasNextLine()
方法返回true,而该hasNext()
方法返回false的结果又如何呢?
注意:根据输入文件,该hasNext()
方法将按预期返回结果。在hasNextLine()
似乎没有被返回正确的结果。
这是我正在运行的创建以下结果的代码:
public void ScannerTest(Reader fileReaderObject){
Scanner scannerObj = new Scanner(fileReaderObject);
for(int i = 1; scannerObj.hasNext(); i++){
System.out.println(i + ": " + scannerObj.next());
System.out.println("Has next line: " + scannerObj.hasNextLine());
System.out.println("Has next: " + scannerObj.hasNext());
}
System.out.println();
scannerObj.close();
}
以下是我传递给此扫描仪的文件的实际内容:
a 3 9
b 3 6
c 3 3
d 2 8
e 2 5
f 2 2
g 1 7
h 1 4
i 1 1
以下是我运行代码时控制台中显示的内容的结尾,其中包括我无法理解的部分:
25: i
Has next line: true
Has next: true
26: 1
Has next line: true
Has next: true
27: 1
Has next line: true
Has next: false
hasNextLine()
检查linePattern
缓冲区中是否还有另一个。hasNext()
检查缓冲区中是否有可解析的令牌,由扫描仪的定界符分隔。由于扫描程序的定界符是空格,并且linePattern
也是空格,因此linePattern
缓冲区中可能有一个a ,但没有可解析的标记。
通常,最常见的处理此问题的方法是始终nextLine()
在解析文本每一行中的所有标记(例如数字)之后调用。在使用Scanner
时也需要从中读取用户输入时执行此操作System.in
。要使扫描仪越过此空格定界符,必须使用scanner.nextLine()
清除行定界符。
附录:
LinePattern
被定义为Pattern
与此匹配的:
private static final String LINE_SEPARATOR_PATTERN =
"\r\n|[\n\r\u2028\u2029\u0085]";
private static final String LINE_PATTERN = ".*("+LINE_SEPARATOR_PATTERN+")|.+$";
默认令牌定界符是这样的Pattern
:
private static Pattern WHITESPACE_PATTERN = Pattern.compile(
"\\p{javaWhitespace}+");
对于scanner对象,方法返回true,而方法返回false,这是怎么回事? 注意:基于输入文件,方法按预期返回结果;似乎没有返回正确的结果。 下面是我正在运行的代码,它创建了以下结果: 以下是我要传递给此扫描仪的文件的实际内容: 以下是我运行代码时在控制台中打印的内容的结尾,包括我无法理解的部分:
它仍然打印出10个“*”,但后来我得到了这个错误: 但是如果我使用hasNext而不是hasNextLine,它可以正常工作。 所以我想知道为什么hasNext有效,而hasNextLine无效。
为什么以下输出为True? 这将始终输出,即使条件似乎表明并非如此。如果我删除括号,那么它可以工作,但我不明白为什么。
罗马数字颠倒一百 拉丁文小写字母反转C 变成数字二 变成数字三 为什么Python认为这些不是数字?
问题内容: 我正在尝试通过对象读取命令。为了检查输入语法,我使用了(对于缺少命令的情况)。在许多情况下,它确实可以正常工作,但是现在我有了JavaAPI中描述为“ MAY块并等待输入”的情况。 该方法什么时候阻止,我该如何控制?有趣的是,在块之前有3个案例,它工作得很好。另外,JavaAPI还描述了检查是否存在另一个Input的正确方法,以使该Method 不会产生。 这是我到目前为止所产生的代码
我正在尝试通过对象读取命令。为了检查输入语法,我使用<code>sc。hasNext()(对于缺少命令的情况)。它已经在很多情况下运行良好,但现在我看到了JavaAPI中描述的“MAY block and wait for Input”的情况。 方法何时阻塞,我如何控制它?有趣的是,在街区前的3个案例中,它工作得非常好。此外,JavaAPI还将描述为检查是否存在另一个Input的正确方法,从而使方