有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何打印存储在字符串中的多个值?

我需要帮助解决这个问题,看起来不像我想象的那么容易。我从早期的反馈中尝试了一些选择,但没有帮助。 问题是,当用户输入是这样的:我不知道输出应该显示在屏幕上:当然,先生 或者当用户输入像:I don know(我不知道)(我使用了upercase)时,输出应该是:当然,先生。 或者当用户输入像:idk(我不知道)时,输出应该是:当然,先生。 但这两件事都没有发生所以。。。救命

import java.util.Scanner;
public class Something{
   static void Some(){
      Scanner input = new Scanner(System.in);
      String answer;
      
      System.out.println("Hello Sir, what can I do for you?");
      answer = input.nextLine();
      
      String [] idk = {"I dont know", "i dont know", "idk"};
      
      if(answer.equals(idk)) {
         System.out.println("Sure Sir ");
      } else {
         System.out.println("Sir, anything?");
      }
   }


   public static void main(String [] args) {
      Some();
   }
}

输入:I dont knowi dont knowidk
输出:Sir, anything?


共 (2) 个答案

  1. # 1 楼答案

    最好使用集合(SetList)来存储可接受答案的版本,然后使用方法Collection::contains。此外,存储以小写字母书写的字符串,并将输入转换为小写字母可能也值得:

    List<String> idk = Arrays.asList("i don't know", "i dont know", "idk");
    
    if (idk.contains(answer.toLowerCase())) {
        System.out.println("Sure Sir ");
    } else {
        System.out.println("Sir, anything?");
    }
    
  2. # 2 楼答案

    /*
       provide the input value and a listing of acceptable values
       returns true if acceptableValues contains value
    */
    
    public static boolean anyMatch(String value, String... acceptableValues) {
        return Arrays.stream(acceptableValues).anyMatch((String t) -> value.equals(t));
    }