【问题标题】:Shortcut to Checking a String in a While Loop for Java?在 Java 的 While 循环中检查字符串的快捷方式?
【发布时间】:2016-04-03 05:20:48
【问题描述】:

我对 Java 编程完全陌生。我想知道是否有一种快捷方式来检查具有 许多 预设可能性的输入字符串。例如,我正在尝试检查输入是否与特定字符串匹配,如果不匹配,我希望它经过一个 while 循环,直到用户犯的拼写错误得到纠正。

但不是写

!string.equalsIgnoreCase("badstring")) && !string.equalsIgnoreCase("badstring2")) &&
!string.equalsIgnoreCase("badstring3")) && ...

等等。例如,40 种不同的字符串可能性,有没有更简单的方法来编写它?

或者我只需要写

!__.equalsIgnoreCase("__") && ...

一遍又一遍?

【问题讨论】:

    标签: java string loops while-loop shortcut


    【解决方案1】:

    最好使用 Java 的新聚合操作功能来解决您的问题。你可以这样做:

    import java.util.ArrayList;
    
    class TestStrings {
        public static void main(String... args) {
            String tester = "Some string";
            ArrayList<String> badStrings = new ArrayList<>(1),
            result = new ArrayList<>(0);
    
            badStrings.add("Bad string 1");
            badStrings.add("Some string");
            // add more strings;
    
            // filter out good strings
            badStrings.stream().filter((s) -> {
                // the filter
                return tester.equals(s);
            }).forEach((s) -> {
                // fill the result list with the good strings
                result.add(s);
            });
    
            System.out.println(result.toString());
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以将您的错误字符串存储在一个集合中,并通过循环访问该集合来检查您的输入。

      List<String> badStringList = new ArrayList<>();
      badStringList.add("badString 1");
      badStringList.add("badString 2");
      badStringList.add("badString 3");
       ...
      badStringList.add("badString N");
      
      for (String badString : badStringList){
          if (!inputString.equalsIgnoreCase(badString))) {
              doSomething();
          }
      }
      

      【讨论】:

        【解决方案3】:

        我认为与其检查你不想要什么,不如检查你想要什么,例如在下面的代码中,我想要“Hello”这个词作为输入,所以我只检查“Hello”。 如果需要其他内容,请详细说明。

        import java.util.Scanner;
        
        public class StringEquals {
        public static void main(String[] args) {
            while(true){
                Scanner kbd=new Scanner(System.in);
                String input=kbd.nextLine();
                if(input.equalsIgnoreCase("Hello")){
                System.out.println("String matched");
                System.out.println("Please try again");
                break;
                }
            }
        }
        

        }

        【讨论】:

        • 这与我想要或不想要什么无关;无论哪种方式,如果我想检查我是否想要 40 个项目,我仍然需要输入 "input.equalsIgnoreCase("hello")&&" 等 40 次。我只是想知道是否有一个快捷方式可以使用,比如我只使用“input.equalsIgnoreCase("hello1","hello2","hello3")" 等等;类似的东西,我可以缩短命令并简单地列出我想要检查的所有选项。希望这更有意义。
        • 那你为什么不使用 input.contains("Hello");
        • 我以前从未见过这种结构(如前所述,我是 Java 新手)。那个表格叫什么?
        猜你喜欢
        • 2011-03-05
        • 1970-01-01
        • 1970-01-01
        • 2012-11-26
        • 2020-10-13
        • 1970-01-01
        • 1970-01-01
        • 2017-03-29
        • 2012-10-05
        相关资源
        最近更新 更多