我如何运行一个循环,其中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我应该这样做