【发布时间】:2015-03-10 20:36:50
【问题描述】:
我在我的方法中使用了一个while循环
public void keyTyped (KeyEvent e)
这里的问题是,程序进入循环,它要求用户输入。如果输入在“while”设置的参数范围内,它只会无限地重复输入。尽管我确实为此输入了代码,但它不再要求另一个输入。
我需要的是它在每次循环时询问用户输入。有什么帮助吗?
//cardChosen1 is "null" at this point`
while (cardChosen1 < 97 || cardChosen1 > 108)
{
Thread.currentThread ().setPriority (Thread.MIN_PRIORITY);
cardChosen1 = e.getKeyChar ();
System.out.println ("Inside Loop" + cardChosen1);
repaint ();
try
{
// Stop thread for 20 milliseconds
Thread.sleep (20);
}
catch (InterruptedException ex)
{
// do nothing
}
Thread.currentThread ().setPriority (Thread.MAX_PRIORITY);
}
【问题讨论】:
-
它在哪里要求另一个输入?
e.getKeyChar()的值不会改变。 -
这不是您为基于事件的输入创建 while 循环的方式...您需要有一个主循环,您可以在其中检查键是否被按下...如果它被按下,然后您检查它是哪一个并将其考虑为有效的用户输入。但你可能甚至不需要 while 循环
-
@Ubica 但我需要它继续询问,直到用户输入正确的密钥。
-
@iamnotmaynard 我要求另一个输入,因为当输入的输入不是有效输入时。
-
首先查看Event Dispatching Thread 和How to write KeyListeners。 AWT 和大多数 GUI 框架一样,是一个事件驱动的环境,也就是说,您不使用“循环”来等待某事发生,您注册一个侦听器,当某些事件发生时收到通知,然后您采取行动。
标签: java multithreading while-loop awt