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

Java 如何使if语句具有多个字符串?,java,Java,我想做一个简单的石头-布-剪刀游戏,我想在那里做一个if语句,如果用户输入除了石头,布,剪刀以外的单词,它说一个无效的选择,我尝试了“| |”,我也尝试了“&&” 这应该可以解决问题: if(!userChoice.equalsIgnoreCase("Scissors") && !userChoice.equalsIgnoreCase("Paper") && !userChoice.equalsIgnoreCase("rock")) { System.ou

我想做一个简单的石头-布-剪刀游戏,我想在那里做一个if语句,如果用户输入除了石头,布,剪刀以外的单词,它说一个无效的选择,我尝试了“| |”,我也尝试了“&&”


这应该可以解决问题:

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

    // Exit program
    Main.main(args);
}
使用
!String\u name.equalsIgnoreCase(字符串s)
相同=,但显然不能在字符串上使用,因为使用
=如果它们不是同一个对象,您只需进行计算,这将始终为false

if(!(userChoice.equalsIgnoreCase("Scissors") || userChoice.equalsIgnoreCase("Paper") ||  userChoice.equalsIgnoreCase("rock"))
您的
&&(“Paper”)
语法无效,只允许布尔类型。您要检查的是,选择不等于“剪刀”,不等于“纸”,也不等于“石头”


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

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

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

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

一种简洁的方法是使用
开关
语句

switch( userChoice.toLowerCase() ) {
   case "scissors":
   case "paper":
   case "rock":
      // Continue
      break; 
   default:
      System.out.println("Invalid choice. Ending program.");
      System.exit(1);
      break;
}
然后按如下方式进行检查:

if(Possibilities.isInPossibilities("paper")) {
    ....
}
这是针对特定代码的解决方案。但是对于最适合标题的答案,您可以使用Porz答案

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

if (!correctChoice.contains(userChoice.toLowerCase()){
    //invalid input
}
Set<String> correctChoices = new HashSet<>(Arrays.asList("rock","paper","scissors"));
switch( userChoice.toLowerCase() ) {
   case "scissors":
   case "paper":
   case "rock":
      // Continue
      break; 
   default:
      System.out.println("Invalid choice. Ending program.");
      System.exit(1);
      break;
}
Enum Possibilities {
    ROCK,
    PAPER,
    SCISSORS;

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