我是Java新手,我创建了某种迷你游戏,我希望玩家选择是否想再次玩,我尝试将我的start boolean 变量更改为静态类型并添加一些行代码,但代码似乎不起作用,每次我玩游戏时,它都会问我是否要重玩,但问题是,即使我最后在控制台输入"is",游戏似乎没有重新开始。谁能帮助我,我将不胜感激,谢谢!
import java.util.Random;
import java.util.Scanner;
//Rocks, papers, scissors game complied by William To.
public class RockPaperScissor {
static int gamePlays = 0;
static boolean start = true;
public static void main(String[] args) {
while (start){
@SuppressWarnings("resource")
Scanner userInput = new Scanner(System.in);
Random comOutput = new Random();
System.out.println("Do you choose rock, paper or scissor?");
String userChoice = userInput.nextLine();
int comChoice = comOutput.nextInt(2);
switch (userChoice){
case "rock":
if(comChoice == 0){
System.out.println("I choose rock too! That's a draw!");
} else if(comChoice == 1){
System.out.println("I choose paper! I win!");
} else {
System.out.println("I choose scissor! You win!");
}
break;
case "paper":
if(comChoice == 0){
System.out.println("I choose rock! You win!");
} else if(comChoice == 1){
System.out.println("I choose paper too! That's a draw!");
} else {
System.out.println("I choose scissor! I win!");
}
break;
case "scissor":
if(comChoice == 0){
System.out.println("I choose rock! I win!");
} else if(comChoice == 1){
System.out.println("I choose paper! You win!");
} else {
System.out.println("I choose scissor too! That's a draw!");
}
break;
default :
System.out.println("I don't think that's an option.");
break;
}
gamePlays++;
System.out.println("You've played " + gamePlays + " games.");
//BELOW IS THE PART I want to ask, what's wrong?
System.out.println("Do you want to play again?");
String playAgain = userInput.next();
if (playAgain == "yes"){
System.out.println("Restarting game...");
start = true;
} else if (playAgain == "no") {
System.out.println("Quitting game.");
start = false;
}
}
}
}
Eclipse 的打印输出:
Do you choose rock, paper or scissor?
rock **//my input**
I choose paper! I win!
You've played 1 games.
Do you want to play again?
yes **//my input**
Do you choose rock, paper or scissor?
paper **//my input**
I choose paper too! That's a draw!
You've played 2 games.
Do you want to play again?
no **//my input**
Do you choose rock, paper or scissor?
最佳答案
字符串之间的比较需要String#equals而不是==
。所以这个:
if (playAgain == "yes"){
System.out.println("Restarting game...");
start = true;
} else if (playAgain == "no") {
System.out.println("Quitting game.");
start = false;
}
必须变成这样:
if (playAgain.equals("yes")){
System.out.println("Restarting game...");
start = true;
} else if (playAgain.equals("no")) {
System.out.println("Quitting game.");
start = false;
}
为了正常工作。
但是,我建议使用String#equalsIgnoreCase ,因为使用 equals
时,比较区分大小写,因此如果用户输入 Yes
或 yEs
,则 playAgain.equals("yes")
将返回 false
更新
正如 Maroun Maroun 所说,最好使用
"yes".equals(playAgain)
和
"no".equals(playAgain)
因为如果 playAgain 为 null
它不会抛出 NullPointerException
关于java - 字符串输入在 if-else 语句中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17249305/