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。现在您只需要查看该值是否等于用户的选择,如果是这样,则用户赢了。
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) 来确保如果下一个索引高于列表中的最后一个元素,它会翻转回第一个元素。
添加回答
举报