java(eclipse)石头剪刀布代码,选择一个简单的输入,并生成石头剪刀布的输出

标签 java string loops user-input

我需要创建一个程序,要求用户输入字符串值,如果输入是“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/

相关文章:

java - 性能 (JAVA) ~ 循环中的字符串连接,带有前置和附加

Ruby:根据单词数组从文本中过滤掉关键字的快速方法

java - 如何为Spring Integration提供转换器?

java - 按指定模式在java中拆分字符串

string - 在 Haskell 中查找文本表中一列中最长的单词

php - MySQL语法错误将php字符串插入表中

c - while循环没有初始化

java - 从文件中提取值

java - 使用 Spark 展平嵌套 json 文档并加载到 Elasticsearch 中

java - 在Java中对一个大文件进行排序