java简单的“If”语句在keyTyped()中不起作用
我正在运行这段代码,这给了我一个巨大的问题。在不接受用户的任何字符的情况下,它只跳过所有if语句,并自动将numocardschosen更改为5
public void keyTyped (KeyEvent e)
{
if (numOfCardsChosen == 0)
{
cardChosen1 = e.getKeyChar ();
numOfCardsChosen++;
cardChosen2 = e.getKeyChar ();
System.out.println (numOfCardsChosen);
}
if (numOfCardsChosen == 1)
{
cardChosen2 = e.getKeyChar ();
numOfCardsChosen = 2;
System.out.println (numOfCardsChosen);
}
if (numOfCardsChosen == 2)
{
cardChosen3 = e.getKeyChar ();
numOfCardsChosen = 3;
System.out.println (numOfCardsChosen);
}
if (numOfCardsChosen == 3)
{
cardChosen4 = e.getKeyChar ();
numOfCardsChosen = 4;
System.out.println (numOfCardsChosen);
}
if (numOfCardsChosen == 4)
{
cardChosen5 = e.getKeyChar ();
numOfCardsChosen = 5;
System.out.println (numOfCardsChosen);
repaint ();
}
}
# 1 楼答案
有几个问题。首先,您的一系列“if”语句每个增量
numOfCardsChosen
,从而使下一个if
语句的条件为真(假设第一个条件为真)。例如,假设numOfCardsChosen
最初为0:这可以通过对第二个和后续的“if”语句使用“else-if”来解决
其次,您从同一事件中两次请求关键字符:
在上面的代码片段中,
cardChosen1
和cardChosen2
将始终相同# 2 楼答案
首先,什么是numOfCardsChosen?此变量没有声明。另外,您如何在代码中调用此方法?要捕获KeyEvent,您肯定希望在while循环中调用此方法
# 3 楼答案
如果只想检查其中一个If条件,则使用
if-else if-else if-else-else
,而不是if-if-if-if
@JRowan在您的问题评论中回答了您的问题
改用
注意:对于这种情况,首先尝试调试代码(使用断点或使用记录器)。您将从调试本身中找到问题的原因