gpt4 book ai didi

java - java中的Scanner如何向hasNext()返回true?

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:26 24 4
gpt4 key购买 nike

我正在使用具有方法 isEmpty() 的 stdlib.jar 库运行 Sedgwick 算法 1 中的程序它应该确定标准输入中是否还有要处理的参数。

以下是来自名为 StdIn 的类中包含的源文件代码的代码。 :

public static boolean isEmpty() {
return !scanner.hasNext();
}

如果我在 Windows 命令行中成功编译后输入以下参数:

10  2 4 6 8 9 0

然后按回车键,程序在 while 循环中正确处理主函数中的数据和 StdOut.println(p + " " + q); 行工作正常。

public static void main(String[] args) {
int N = StdIn.readInt();
QuickUnionUF uf = new QuickUnionUF(N);
while (!StdIn.isEmpty()) {
int p = StdIn.readInt();
int q = StdIn.readInt();

if (uf.connected(p, q)) continue;
uf.union(p, q);
StdOut.println(p + " " + q);


}

}

但是,while 循环包含条件 (!StdIn.isEmpty())永远不会成为事实,打印答案后只是挂起等待更多输入。这意味着 while 条件永远不会确定命令行是否已到达输入末尾。

问题

我如何告诉程序我已经完成了我的论证并且没有更多的输入?我需要在最后一个参数之后在 Windows 命令行中输入特殊的转义序列吗?或者是否有一种标准方法来告诉扫描仪输入已完成的命令行参数?

最佳答案

答案是:当它在处理参数后卡在 Windows 提示符处时,请键入 ctrl + z(这是用于标准输入的 Windows EOF,告诉扫描仪没有更多输入。

关于java - java中的Scanner如何向hasNext()返回true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33111465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com