gpt4 book ai didi

java - 有没有办法不使用 Scanner (Java) 推进一行

转载 作者:行者123 更新时间:2023-12-01 19:57:39 25 4
gpt4 key购买 nike

好吧,我在扫描仪前进一条额外的线时遇到了一个小问题。我有一个文件,其中有很多行,其中包含整数,每行用一个空格分隔。文件中的某处有一行没有整数,只有单词“done”。当找到完成后,我们退出循环并打印出小于每行中每个给定整数的最大素数(如果整数已经是素数,则不对其执行任何操作)。我们一直这样做,直到出现“完成”为止。

我的问题:假设该文件包含 6 行,第 6 行是“done”一词。我的输出将跳过第 1、3 和 5 行。它只会返回第 2 行和第 4 行的正确值。

这是我读取其中值的代码片段:

Scanner in = new Scanner(
new InputStreamReader(socket.getInputStream()));
PrintStream out = new PrintStream(socket.getOutputStream());

while(in.nextLine() != "done"){


String[] arr = in.nextLine().split(" ");

现在我感觉到问题是循环中的 nextLine 调用使行前进,然后 nextline.split 调用也使行前进。因此,所有奇数行都将丢失。是否有另一种方法可以在不前进一行的情况下检查“完成”,或者是否有一个可能的命令我可以调用以某种方式将扫描仪重置回循环的开头?

最佳答案

问题是你有 2 次调用 nextLine() 尝试这样的事情

String line = in.nextLine();
while (!"done".equals(line)) {
String[] arr = line.split(" ");

// Process the line

if (!in.hasNextLine()) {
// Error reached end of file without finding done
}

line = in.nextLine();
}

另请注意,我修复了对“done”的检查,您应该使用equals()

关于java - 有没有办法不使用 Scanner (Java) 推进一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49060211/

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