3 回答

TA貢獻1911條經驗 獲得超7個贊
不能用兩個參數編寫 switch 塊。從 Oracle 的文檔:
開關適用于 byte、short、char 和 int 原始數據類型。它還適用于枚舉類型(在 Enum Types 中討論)、String 類和一些包裝某些原始類型的特殊類:Character、Byte、Short 和 Integer(在 Numbers 和 Strings 中討論)。
但是,您可以通過編寫以下代碼使您的程序更加模塊化:
if (weaponChoice.equals(getComputerChoiceVariable)) {
System.out.println("It's a draw!");
ties++;
} else if (userWins(weaponChoice, getComputerChoiceVariable)) {
System.out.println("You won!");
userScore++;
} else {
System.out.println("You Lost!");
compScore++;
}
并使用類似的東西:
public boolean userWins(String userWeapon, String compWeapon) {
if((userWeapon.equals("Rock")) && (compWeapon.equals("Scissors"))) {
return true;
} else if((userWeapon.equals("Paper")) && (compWeapon.equals("Rock"))){
return true;
} else if((userWeapon.equals("Scissors")) && (compWeapon.equals("Paper"))){
return true;
} else if(userWeapon.equals("Rock") && compWeapon.equals("Paper")) {
return false;
} else if(userWeapon.equals("Paper") && compWeapon.equals("Scissors")) {
return false;
} else {
return false;
}
}

TA貢獻1864條經驗 獲得超2個贊
您不一定需要切換代碼來縮短它。您可以將樹選項放在一個列表中,并將用戶的選擇與計算機選擇后的值進行比較,以查看用戶是否獲勝。
如果您有列表[Rock, Paper, Scissors],則計算機選擇了 Rock。找到它后面的元素,在這種情況下是 Paper?,F在您只需要查看該值是否等于用戶的選擇,如果是這樣,則用戶贏了。
List<String> choices = Arrays.asList("Rock", "Paper", "Scissors");
if (playerChoice.equals(computerChoice)) {
System.out.println("Draw!");
} else if (playerChoice.equals(choices.get((choices.indexOf(computerChoice) + 1) % 3))) {
System.out.println("You won!");
} else {
System.out.println("You lost!");
}
此處可choices.indexOf(computerChoice)找到列表中計算機選擇的當前位置。它添加一個以查找列表中的下一個元素,并使用余數運算符 ( % 3) 來確保如果下一個索引高于列表中的最后一個元素,它會翻轉回第一個元素。
添加回答
舉報