比较java中单词中的单词

时间:2017-02-15 18:06:33

标签: java arrays if-statement

基本上我已经:

public static void main(String[] args)
{
String genre = "Action, Animation, Comdey";
String[] genres   = genre.split(", ");
for(int i=0;i<(genres.length)-1;i++){
    System.out.println(genres[i]);
    if(!genres[i].equals("Action")              || !genres[i].equals("Adventure")
            || !genres[i].equals("Animation")   || !genres[i].equals("Biography")
            || !genres[i].equals("Comedy")      || !genres[i].equals("Crime")
            || !genres[i].equals("Documentary") || !genres[i].equals("Drama")
            || !genres[i].equals("Family")      || !genres[i].equals("Fantasy")
            || !genres[i].equals("Film-Noir")   || !genres[i].equals("Game-Show")
            || !genres[i].equals("History")     || !genres[i].equals("Horror")
            || !genres[i].equals("Music")       || !genres[i].equals("Musical")
            || !genres[i].equals("Mystery")     || !genres[i].equals("News")
            || !genres[i].equals("Reality-TV")  || !genres[i].equals("Sci-Fi")
            || !genres[i].equals("Sport")       || !genres[i].equals("Talk-Show")
            || !genres[i].equals("Thriller")    || !genres[i].equals("War")
            || !genres[i].equals("Western")
            ){
        System.out.println("Selected genres could not be identified");
        return;
   }else {
        System.out.println("Success");
   }
}
}

正如您所看到的,我有一个包含genre的字符串Action, Animation, Comdey,然后我用,(space)分割每个Word然后使用if()我正在比较每个阵列。您可能知道我的Action单词列表中存在AnimationComedyif()的数组。因此,不应该执行System.out.println("Selected genres could not be identified");,但确实如此,我不知道为什么但这确实让我感到非常震惊。

您可以在https://www.compilejava.net/复制/粘贴我的代码并自行查看结果。

如果你告诉我我做错了什么,我真的很感激。

3 个答案:

答案 0 :(得分:1)

如果您要检查当前类型是否与可用类型的||匹配,则需要将所有OR(&&)更改为AND(none),例如:< / p>

public static void main(String[] args) {
    String genre = "Action, Animation, Comdey";
    String[] genres = genre.split(", ");
    for (int i = 0; i < (genres.length) - 1; i++) {
        System.out.println(genres[i]);
        if (!genres[i].equals("Action") && !genres[i].equals("Adventure") && !genres[i].equals("Animation")
                && !genres[i].equals("Biography") && !genres[i].equals("Comedy") && !genres[i].equals("Crime")
                && !genres[i].equals("Documentary") && !genres[i].equals("Drama") && !genres[i].equals("Family")
                && !genres[i].equals("Fantasy") && !genres[i].equals("Film-Noir") && !genres[i].equals("Game-Show")
                && !genres[i].equals("History") && !genres[i].equals("Horror") && !genres[i].equals("Music")
                && !genres[i].equals("Musical") && !genres[i].equals("Mystery") && !genres[i].equals("News")
                && !genres[i].equals("Reality-TV") && !genres[i].equals("Sci-Fi") && !genres[i].equals("Sport")
                && !genres[i].equals("Talk-Show") && !genres[i].equals("Thriller") && !genres[i].equals("War")
                && !genres[i].equals("Western")) {
            System.out.println("Selected genres could not be identified");
            return;
        } else {
            System.out.println("Success");
        }
    }
}

Here在逻辑OR运算符上多了一点。在您的方案中,!genres[i].equals("Action")评估为false&#39;操作&#39;但是,!genres[i].equals("Adventure")等其他条件评估为true,因此,它会打印&# 34;无法识别所选类型&#34;。

答案 1 :(得分:0)

String genre =&#34; Action,Animation,Comdey&#34;应改为String genre =&#34; Action,Animation,Comedy&#34;

答案 2 :(得分:0)

编写上述代码的更清晰有效的方法是使用TreeSet:

public static void main(String[] args)
  {
   String genre = "Action, Animation, Comdey";
    String[] genres = genre.split(", ");
    Set<String> genreSet = new TreeSet<String>();
    genreSet.add("Action");
    genreSet.add("Adventure");
    genreSet.add("Animation");
    genreSet.add("Documentary");
    genreSet.add("Comedy");
    //more genres follows here

    for (int i = 0; i < (genres.length) - 1; i++) {
        System.out.println(genres[i]);
        if (!genreSet.contains(genres[i])) {
            System.out.println("Selected genres could not be identified");
            return;
        } else {
            System.out.println("Success");
        }
  }
  }

高效,因为在TreeSet中搜索流派字符串的时间复杂度将是(log n)的顺序。