我需要创建一个程序,要求用户输入字符串值,如果输入是“r”“p”或“s”,则返回字符串值“rock”“paper”或“scissors”如果用户输入不同的内容。
package loopsGamesProject;
import java.util.Scanner;
public class LoopsGamesProject_RockPaperScissors {
public static void main(String[] args) {
String in="-";
Scanner input= new Scanner(System.in);
System.out.print("Enter 'r' for rock, and 'p' for paper,'s' for scissors:");
in=input.next();
if(in=="r"||in=="p"||in=="s"){
if(in=="r"){
in="Rock";
}
if(in=="p"){
in="Paper";
}
if(in=="s"){
in="Scissors";
}
while(in!="r"||in!="p"||in!="s") {
System.out.print("Enter 'r' for rock, and 'p' for paper,'s' for scissors:");
in=input.next();
if(in=="r"||in=="p"||in=="s"){
if(in=="r"){
in="Rock";
}
if(in=="p"){
in="Paper";
}
if(in=="s"){
in="Scissors";
}
}
}
input.close();
System.out.print(in);
}
}
}
问题是,它会要求一个变量,但会终止本身。我尝试添加一个“out”变量。当我尝试使用 do while 循环执行此操作时,它不断要求输入但从未返回任何内容。我找不到问题。
最佳答案
在java中比较字符串时,需要使用.equals()
方法而不是==
函数。此规则适用于 java 中的所有对象,包括 String。
例如:
if (in.equals("r"))
//Rock!
您还需要替换 != 并添加一个break语句来退出循环。像这样的事情会做:
while (!(in.equals("r") || in.equals("p") || in.equals("s"))) {
System.out.print("Enter 'r' for rock, and 'p' for paper,'s' for scissors:");
in = input.next();
if (in.equals("r") || in.equals("p") || in.equals("s")) {
if (in.equals("r"))
in = "Rock";
else if (in.equals("p"))
in = "Paper";
else
in = "Scissors";
break;
}
}
编辑:上面提示两次。这将修复它:
public static void main(String[] args) {
String in = "";
Scanner input = new Scanner(System.in);
while (!(in.equals("Rock") || in.equals("Paper") || in.equals("Scissors"))) {
System.out.print("Enter 'r' for rock, and 'p' for paper,'s' for scissors:");
in = input.next();
if (in.equals("r") || in.equals("p") || in.equals("s")) {
if (in.equals("r")) {
in = "Rock";
}
if (in.equals("p")) {
in = "Paper";
}
if (in.equals("s")) {
in = "Scissors";
}
break;
}
}
input.close();
System.out.print(in);
}
关于java(eclipse)石头剪刀布代码,选择一个简单的输入,并生成石头剪刀布的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49713099/