这个程序是一个简单的纸牌游戏,我挂在一个复杂的循环上。这张“火”卡需要检查其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;
答案 0 :(得分:1)
尝试使用&&而不是|| :
while ((y == true && x == true) && (end == false))
也许你应该使用||而不是|在以下代码中:
if ((newBoard.getSlotA2() == "fire") | (newBoard.getSlotA2() == "wind"))
答案 1 :(得分:0)
您可以使用for循环而不是while来防止它无限循环。此外,将end设置为true不一定会结束循环,因为x和y仍然可以为真。更好的条件是:
while((x && y) && (!end)){