我如何运行一个循环,其中java在每次循环时都会暂停,如果有用户输入,值会添加到列表的末尾?
我不知道如何更简洁地命名这个问题。基本上,我想知道如何在每个循环调用我如何运行一个循环,其中java在每次循环时都会暂停,如果有用户输入,值会添加到列表的末尾?,java,sleep,Java,Sleep,我不知道如何更简洁地命名这个问题。基本上,我想知道如何在每个循环调用TimeUnit.SECONDS.sleep方法时运行for循环,并在有用户输入的情况下将值添加到该循环所经历的列表的末尾 以下是相关代码: Scanner input = new Scanner(System.in); for (int i = 0; i < printQueue.size(); i++) { System.out.println("Printing " + i + " o
TimeUnit.SECONDS.sleep
方法时运行for循环,并在有用户输入的情况下将值添加到该循环所经历的列表的末尾
以下是相关代码:
Scanner input = new Scanner(System.in);
for (int i = 0; i < printQueue.size(); i++)
{
System.out.println("Printing " + i + " of " + printQueue.size()
+ "\n" + printQueue.get(i).getJobTime()
+ " seconds remaining."
+ "\nPlease press \"Enter\" to submit a new print"
+ " job.");
TimeUnit.SECONDS.sleep(printQueue.get(i).getJobTime());
if (input.hasNextLine())
{
input.nextLine();
int printTime = jobGen.nextInt(10);
PrintJob job = new PrintJob();
job.setJobNum(i);
job.setJobTime(printTime);
printQueue.add(job);
}
}
System.out.println(
"Printed " + printQueue.size() + " of " + printQueue.size());
}
扫描仪输入=新扫描仪(System.in);
对于(int i=0;i
其中,printQueue
是不同的PrintJobs
的链接列表,每个作业都有一个jobNum
,更重要的是一个jobTime
。如果用户在任何单个循环中按下了enter键,则会自动生成新的PrintJob
,并将其添加到printQueue
的末尾
现在发生的情况是,除非我按下enter键,否则程序只会运行,并且永远不会终止。我知道hasNextLine
和hasNext
可能会阻止扫描指定的项目,但我不知道如何实现类似的功能
谢谢。阻止等待输入,直到有一行可用或到达输入的末尾。因此,您无法同步使用它来检查输入是否可用。正如@Abion47所建议的,您应该将此输入处理移动到一个单独的线程。您考虑过将输入检查移动到另一个线程吗?@Abion47我应该这样做