2013-02-20 95 views
-6

当我创建一个字符串数组时,equalsIgnorecase不能识别它,在eclipse中它建议我将数组更改为其他东西,比如verca。如何创建一个字符串数组

public void onChat(PlayerChatEvent event) { 
     Player player = event.getPlayer(); 
     String[] curse = new String[] {"rude1", "rude2", "rudeN"}; 
     if (event.getMessage().equalsIgnoreCase(curse)) { 
     event.setCancelled(true); 
     player.sendMessage("Don't Swear"); 
    } 
} 
} 

这是我为我的视频游戏诅咒过滤器。我究竟做错了什么?

+0

听取日食错误:P – smk 2013-02-20 04:56:14

+1

果然是高手讲并不受这些过滤器捕获,对于初学者。 – Makoto 2013-02-20 04:56:57

+0

equalsIgnoreCase接受一个字符串,而不是一个字符串数组。如果要执行检查,则必须遍历数组。请参阅http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#equalsIgnoreCase(java.lang.String) – 2013-02-20 04:57:23

回答

1

您需要通过curses循环来检查每一个。

for (String c : curse) { 
    ... do check ... 
} 
+0

我不确定你想说什么,(对不起,我对Java相当陌生)。 – 2013-02-20 04:58:46

0

,而不是这个if (event.getMessage().equalsIgnoreCase(curse)) 您可以使用简单for loop

for(int i=0;i<curse.length;i++){ 
    if (event.getMessage().equalsIgnoreCase(curse[i])){ 
     event.setCancelled(true); 
    player.sendMessage("Don't Swear"); 
    } 
} 

,或者您可以使用enhanced for loop检查值

for(String s:curse){ 
    if (event.getMessage().equalsIgnoreCase(s)) { 
    event.setCancelled(true); 
    player.sendMessage("Don't Swear"); 
} 
} 
+0

你在一个中使用'curse [i]',但在另一个中使用增强的。始终如一。 :P – Makoto 2013-02-20 04:58:24

+0

@Makoto改变了它:) – kaysush 2013-02-20 05:01:01

0

继续与什么user2089674建议。

我想你想过滤掉包含骂人词的消息,所以不是使用equalsIgnoreCase,而是使用contains而不是?

也就是说

for (String c : curse) { 

    if(event.getMessage().contains(c)){ 
     ......punish bad players.. 
    } 
} 

0

它已经如前所述,但想法是,method signature for String.equalsIgnoreCase()不接受String[]作为参数。

仔细观察它 - 您可能有一个String[],但这与String不一样。想象一下,当你需要1美元的账单来使用自动售货机,但你只有20美元 - 这是行不通的。

因此,您需要迭代该数组的所有元素,并通过equalsIgnoreCase来提供它们。

这里有三种方法可以做到这一点:

  1. 一个简单的for循环

    for(int i = 0; i < curse.length(); i++) { 
        if(curse[i].equalsIgnoreCase(event.getMessage()) { 
         // logic 
        } 
    } 
    
  2. enhanced for

    for(String badWord : curse) { 
        if(badWord.equalsIgnoreCase(event.getMessage()) { 
         // logic 
        } 
    } 
    
  3. 通过Arrays.asList(T... a)数组转换为List集合并使用Iterator<String>给我TERATE对他们

    List<String> badWords = Arrays.asList(curse); 
    Iterator<String> badWordIterator = badWords.iterator(); 
    while(badWordIterator.hasNext()) { 
        if(badWordIterator.next().equalsIgnoreCase(event.getMessage())) { 
         // logic 
        } 
    } 
    
相关问题