在Java的While循环中检查字符串的快捷方式?

在Java的While循环中检查字符串的快捷方式?,java,string,loops,while-loop,shortcut,Java,String,Loops,While Loop,Shortcut,我对Java编程一无所知。我想知道是否有一个快捷方式来检查带有许多预设可能性的输入字符串。例如,我试图检查输入是否与特定字符串匹配,如果不匹配,我希望它通过while循环,直到用户的拼写错误得到纠正 而不是写作 !string.equalsIgnoreCase("badstring")) && !string.equalsIgnoreCase("badstring2")) && !string.equalsIgnoreCase("badstring3")) &am

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

而不是写作

!string.equalsIgnoreCase("badstring")) && !string.equalsIgnoreCase("badstring2")) &&
!string.equalsIgnoreCase("badstring3")) && ...
例如,对于40种不同的字符串可能性,有没有更简单的方法来编写它

还是我只需要写作

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

一遍又一遍?

我想,与其检查你不想要的,不如检查你想要的,例如,在下面的代码中,我想要“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;
        }
    }
}
}

您可以将坏字符串存储在集合中,并通过循环集合来检查输入

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();
    }
}
List badStringList=newarraylist();
添加(“badString 1”);
添加(“badString 2”);
添加(“badString 3”);
...
添加(“badString N”);
用于(字符串badString:badStringList){
如果(!inputString.equalsIgnoreCase(badString))){
doSomething();
}
}

最好使用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());
    }
}
import java.util.ArrayList;
类测试字符串{
公共静态void main(字符串…参数){
String tester=“一些字符串”;
ArrayList badStrings=新的ArrayList(1),
结果=新阵列列表(0);
添加(“错误字符串1”);
添加(“一些字符串”);
//添加更多字符串;
//过滤掉好的字符串
badStrings.stream().filter((s)->{
//过滤器
返回测试仪。等于(s);
}).forEach((s)->{
//用正确的字符串填充结果列表
结果。添加(s);
});
System.out.println(result.toString());
}
}

这与我想要什么或不想要什么无关;无论哪种方式,如果我想检查我是否想要40个项目,我仍然需要输入“input.equalsIgnoreCase(“hello”)&&&”等等40次。我只是想知道是否有一个快捷方式可以使用,比如说,我只使用“input.equalsIgnoreCase(“hello1”、“hello2”、“hello3”)等等;类似这样的东西,我可以缩短命令并简单地列出我想要检查的所有选项。希望这更有意义。那么为什么不使用input.contains(“Hello”);我以前从未见过这种结构(如前所述,我对Java是全新的)。那张表格叫什么?