[英]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.