[英]Complex loop help. Java
这个程序是一个简单的纸牌游戏,我陷入了一个复杂的循环。 此“射击”卡需要检查其2个相邻游戏板插槽,以查看它是否被另一张卡所占据,如果是,则是否会影响该卡。 使用此循环,它要么需要成功运行一次,要么需要两次运行失败。 我以为我可以通过下面的代码找到它,但是当它未能成功运行循环时,程序将崩溃且没有错误。 让我知道您的想法,谢谢。
这段代码只是方法,主要不包括在内。
public static void fireAction(String slotSelection)
{
switch (slotSelection)
{
case "A1":
{
boolean x = true;
boolean y = true;
boolean end = false;
while ((y == true && x == true) || (end == false))
{
int burn = roll.nextInt(2);
switch (burn)
{
case (0):
if ((newBoard.getSlotA2() == "fire") | (newBoard.getSlotA2() == "wind")){
newBoard.setSlotA2("BURNED");
end = true;}
else
x = false;
break;
case (1):
if ((newBoard.getSlotB1() == "fire") | (newBoard.getSlotB1() == "wind")){
newBoard.setSlotB1("BURNED");
end = true;}
else
y = false;
break;
}//end switch
}//end while
}//end case A1
break;
尝试使用&&代替|| :
while ((y == true && x == true) && (end == false))
而且也许您应该使用|| 代替| 在以下代码中:
if ((newBoard.getSlotA2() == "fire") | (newBoard.getSlotA2() == "wind"))
您可以使用for循环而不是while来防止其无限循环。 同样,将end设置为true不一定会结束循环,因为x和y仍然可以是true。 更好的条件是:
while((x && y) && (!end)){
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.