gpt4 book ai didi

java - while (scanner.hasNext()) 循环不工作两次? java

转载 作者:行者123 更新时间:2023-12-01 14:02:38 25 4
gpt4 key购买 nike

我制作了一个类似于自动售货机的程序!

我的代码类似于:

public static void main (String [] args) {
Scanner sc = new Scanner (System.in);
while(sc.hasNext()) {
String string = sc.next();

sum = generateSum(sum)
.....
}
}

public static int generateSum(int sum) {
Scanner sc = new Scanner (System.in);
while (sc.hasNext()) {
....
}

return sum;
}

抱歉简化了我的代码,但是普通的代码很长!但是,问题是我使用了 while (sc.hasNext()) 循环两次。基本上我想继续我的主要方法,直到用户的输入终止,但我的程序在运行一次后终止。

我想,如果我取出我的 generateSum 方法,那么我的 main 方法中的循环就可以正常工作,所以我猜它一定与 while (sc. hasNext()) 循环两次。

有什么想法可以解决这个问题吗?

最佳答案

hasNext() 方法将阻塞,直到您点击 System.in 上的文件末尾标记,因为它不知道是否有更多输入,直到它读取完整的缓冲区值或到达文件末尾(您可以在 Windows 上使用 Control-Z 或在 Unix 上使用 Control-D 发出信号)。此时,System.in 位于 EOF 标记处,无法从代码中重新打开它。

如果您需要处理来自 System.in 的多个数据流,您将必须使用某种哨兵值(例如单词 END)来标记一个输入流的结束以及另一个的开始。

关于java - while (scanner.hasNext()) 循环不工作两次? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19228558/

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