gpt4 book ai didi

java - 如何将具有多个变量和多个条件的 if 语句制作成 switch case ?可以&&比较案例吗?

转载 作者:行者123 更新时间:2023-12-02 01:54:13 27 4
gpt4 key购买 nike

我正在为学校制作一个剪刀石头布游戏,我有一个可以运行的游戏,但它有 213 行长。我试图通过添加 switch case 代替 if 语句来缩短它。是否存在某些情况下 switch case 不起作用而必须是 if 语句?

String weaponChoice = keyboard.nextLine();
switch (weaponChoice) {
case "Rock":
System.out.println("You Chose Rock");
break;
case "Paper":
System.out.println("You Chose Paper");
break;
case "Scissors":
System.out.println("You chose Scissors");
break;
default:
System.out.println(weaponChoice + " is not a valid answer the computer gets a point!");
compScore++;
break;
}

我将上面的代码放在 if 语句中并将其切换没有问题,但下面的代码我不知道如何更改它。

String getComputerChoiceVariable = getComputerChoice();
System.out.println("The computer chose " + getComputerChoiceVariable);

if (weaponChoice.equals(getComputerChoiceVariable)) {
System.out.println("It's a draw!");
ties++;
} else if ((weaponChoice.equals("Rock")) && (getComputerChoiceVariable.equals("Scissors"))) {
System.out.println("You won!");
userScore++;
} else if ((weaponChoice.equals("Paper")) && (getComputerChoiceVariable.equals("Rock"))) {
System.out.println("You won!");
userScore++;
} else if ((weaponChoice.equals("Scissors")) && (getComputerChoiceVariable.equals("Paper"))) {
System.out.println("You won!");
userScore++;
} else if (weaponChoice.equals("Rock") && getComputerChoiceVariable.equals("Paper")) {
System.out.println("You Lost!");
compScore++;
} else if (weaponChoice.equals("Paper") && getComputerChoiceVariable.equals("Scissors")) {
System.out.println("You Lost!");
compScore++;
} else if (weaponChoice.equals("Scissors") && getComputerChoiceVariable.equals("Rock")) {
System.out.println("You Lost!");
compScore++;
}

也许是这样的

switch (weaponChoice,getComputerChoiceVariable){
case "Rock",case "Scissors":
System.out.println("You won!");
}

但是 Java 不喜欢我收到大量错误。一个开关可以带两个参数吗?我对 Java 非常陌生。我可以以某种方式使用 && 来比较案例吗?

最佳答案

switch 语句只能测试一个表达式的值。可以嵌套 switch 语句,但这过于冗长,并不比一系列 if/else 语句更好。

顺便说一句,您可能想要验证用户选择的武器,这样别人就不会选择 Lizard、Spock、Foo 或其他意外的东西。

您可以将字符串连接成一个字符串,以便对其进行测试。我会使用诸如 "|" 之类的分隔符来使选择更加清晰。而且,不同的案例逻辑相同,避免重复。

switch(weaponChoice + "|" + computerChoice)
{
case "Rock|Scissors":
case "Scissors|Paper":
case "Paper|Rock":
System.out.println("You won!");
userScore++;
break;
case "Rock|Paper":
case "Paper|Scissors":
case "Scissors|Rock":
System.out.println("You lost!");
compScore++;
break;
default:
System.out.println("It's a draw!");
ties++;
}

这很简洁,把所有类似的案例都列出来了,没有重复。

关于java - 如何将具有多个变量和多个条件的 if 语句制作成 switch case ?可以&&比较案例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52542638/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com