Java startsWith无法正常工作



我得到了一个由两个字符串组成的表:

String[] tab = {"why","Why"};

我想让他们看看是否有人在问一个与我标签上的单词不同的问题[]:

for (int i = 0; i < tab.length; i++) {
            if(!message.startsWith(tab[i])){
                System.out.println("Ask using why or Why");
                break;      
            }
            }

当我输入:"为什么天气不好?"时,它会返回:"用为什么或为什么询问"。此外,当我键入:"你好吗?"时,它会返回"询问为什么或为什么"。

我希望这个程序只允许以"为什么"或"为什么"开头的问题。

我做错了什么?

您正在做的事情:

  1. 与第一个条目匹配
  2. 如果不匹配,则向用户显示消息并中止

你想做什么:

  1. 与第一个参赛者比赛
  2. 如果不匹配,请尝试下一个条目
  3. 如果没有匹配的条目,则向用户显示一条消息并中止

这里有一个例子:

boolean found = false;
for (int i = 0; i < tab.length; i++) {
    if(message.startsWith(tab[i])){
        found = true;
        break;
    }
}
if (!found) {
    System.out.println("Ask using why or Why");
}

在您的特定实例中,您也可以只检查字符串的小写版本:

if (!message.toLowerCase().startsWith("why")) {
    System.out.println("Ask using why or Why");
}

最新更新