如何使if语句有多个字符串?

时间:2015-10-18 15:11:25

标签: java

我正在制作一个简单的石头剪刀游戏,我想在那里做一个if语句,如果用户输入除了摇滚,纸张,剪刀之外的一个单词,它说无效的选择,我试过" ||&#34 ;我也试过"&&"。

if(userChoice.equalsIgnoreCase("Scissors") && ("Paper") &&  ("rock")) {
    System.out.println("Invalid choice. Ending program.");

    // Exit program
    Main.main(args);
}

7 个答案:

答案 0 :(得分:1)

if(!(userChoice.equalsIgnoreCase("Scissors") || userChoice.equalsIgnoreCase("Paper") ||  userChoice.equalsIgnoreCase("rock")))
{
    System.out.println("Invalid choice. Ending program.");

    // Exit program
    Main.main(args);
}

答案 1 :(得分:1)

您可以使用正确选择的集合并检查用户选择是否在其中

List<String> correctChoices = Arrays.asList("rock","paper","scissors");
...

if (!correctChoice.contains(userChoice.toLowerCase()){
    //invalid input
}

要提高contains方法的性能,您可以使用HashSet而不是list

Set<String> correctChoices = new HashSet<>(Arrays.asList("rock","paper","scissors"));

答案 2 :(得分:0)

这应解决问题:

if(!userChoice.equalsIgnoreCase("Scissors") && !userChoice.equalsIgnoreCase("Paper") && !userChoice.equalsIgnoreCase("rock"))
{
    System.out.println("Invalid choice. Ending program.");

    // Exit program
    Main.main(args);
}

在比较原始数据类型的情况下,使用!String_name.equalsIgnoreCase(String s)!=相同,但显然不能在字符串上使用它,因为使用!=您只需评估是否它们不是同一个对象,永远都是假的。

答案 3 :(得分:0)

if(!(userChoice.equalsIgnoreCase("Scissors") || userChoice.equalsIgnoreCase("Paper") ||  userChoice.equalsIgnoreCase("rock"))

答案 4 :(得分:0)

if(!userChoice.equalsIgnoreCase("Scissors") && !userChoice.equalsIgnoreCase("Paper") && !userChoice.equalsIgnoreCase("rock")) {
    System.out.println("Invalid choice. Ending program.");

    // Exit program
    Main.main(args);
}

&& ("Paper")的语法无效,只允许使用布尔类型。你要检查的是,选择不等于“剪刀”,不等于“纸”,不等于“摇滚”。

当然,这不是唯一的方法,因为你可以使用否定二进制逻辑来切换true,使用false和AND切换为OR。

答案 5 :(得分:0)

简明的方法是使用switch语句。

switch( userChoice.toLowerCase() ) {
   case "scissors":
   case "paper":
   case "rock":
      // Continue
      break; 
   default:
      System.out.println("Invalid choice. Ending program.");
      System.exit(1);
      break;
}

答案 6 :(得分:0)

FROM phusion/baseimage:latest

然后按照以下方式进行检查:

Enum Possibilities {
    ROCK,
    PAPER,
    SCISSORS;

    public static boolean isInPossibilities(String input) {
        for (Possibilities possibilitie: values()) {
            if (possibilitie.name().equalsIgnoreCase(input)) {
                return true;
            }
        }
        return false
    }
}

这是您特定代码的解决方案。但是对于最适合标题的答案,你可以使用Porz答案。