Scanner sc = new Scanner(System.in);
扫描仪可用于读取文本文件,用户输入流等。正如上面明确指出的,我专门使用它来读取用户输入。
使用上面我做的Scanner,因为它“骑乘”了System.in,所以在没有下一个输入时对其hasNext()的调用将导致相关线程被阻塞,直到下一个有数据为止,然后再返回true。我想检查一下,getter风格,下一个有数据,而不是像hasNext()返回那样,下一个有数据。
其他问题通过启动一个线程等待hasNext()解决了这一问题,从而解决了问问题。那对我的问题没有帮助。
一个有用的代码块将是一些调用hasNext()的代码块,如果它在10ms内未得到答案,则返回false。
我已经阅读并尝试遵守这些规则,但由于这是我的第一个问题,如果我没有正确执行此操作,请大声说出来。
提前致谢。
我认为拥有生产者-消费者没有错:
// Shared queue
final Queue<String> messages = new ConcurrentLinkedQueue<>();
// Non-blocking consumer
ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
ses.scheduleAtFixedRate(new Runnable(){
@Override
public void run() {
// non-blocking
while((String message = messages.poll()) != null) {
// do something
}
}
}, 0, 10, TimeUnit.MILLISECONDS);
// Blocking producer
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
messages.add(sc.next());
}
消费者然后可以对共享对象进行非阻塞Queue
。读取新消息后,只有生产者 知道 它已被填充。
扫描仪可用于读取文本文件、用户输入流等。我专门使用它来读取用户输入,如上文所述。 用我上面做的扫描仪,因为它“骑”System.in,当没有下一个输入时,调用它的hasNext()将导致相关线程阻塞,直到它有下一个数据,当它有数据时返回true。我想检查,getter样式,下一个有数据的天气,而不是像hasNext()返回,下一个有数据的天气。 其他问题通过启动一个线程等待hasNext()来解决
问题内容: 结果集没有hasNext的方法。我想检查resultSet是否有任何值 这是正确的方法吗 问题答案: 没错,最初的光标指向第一行之前,如果第一次调用,则没有数据。 如果使用此方法,则由于它现在已定位在第一行之后,因此可能必须在复位后立即调用。 但是,应该注意的是,塞弗(Seifer)在下面的回答是对该问题的更优雅的解决方案。
有一个任务从控制台得到N个数字,找到最长和最短的一个和他们的长度。任务并不难,工作正常,但我决定做一个检查,如果控制台输入与任务的条件相对应: 只有整数。 是精确的N个数字,而不是更多/更少。 我决定编写一个布尔方法isinputCorret(),它将使用扫描器并检查输入是否正确,但它不能正常工作。
问题内容: 我正在做一个基本的Java控制台应用程序,我想在按Enter之前检查用户是否提供了任何输入。我正在使用Scanner类来获取输入。现在,我得到的是,只要按Enter键,应用程序就等待输入,而无需输入任何内容。 问题答案: 您可以进入等待进入的循环。如果用户按Enter键,请检查输入内容,如果没有提供输入,请继续循环。如果提供了输入,请中断循环。 如果您希望该机制是非锁定的,则需要一个单
好吧,所以我正在做这个项目,你必须做一些来自用户的输入 让我们说如果他进入 "12 3" 但他没有输入第二个输入 如果我把它叫做 如果我打电话 我有错误。我如何检查是否没有第二次输入? 公共静态void main(String [] args)引发IOException{ 如果用户输入 "3 2" 但没有进入第二个...我得到nullpointerx0016
问题内容: 我正在学习“困难方式” Python35。下面是原始代码,我们被要求对其进行更改,以便它可以接受其中不包含0和1的数字。 这是我的解决方案,可以很好地运行并识别浮点值: 通过搜索类似的问题,我找到了一些答案,这些答案可以帮助我编写另一个解决方案,如下面的代码所示。问题是,使用isdigit()不允许用户输入浮点值。因此,如果用户说要取50.5%,它将告诉他们学习如何键入数字。否则它适用