-5

文字列の配列を作成するequalsIgnorecaseと、それが認識されません.Eclipseでは、配列を別のものに変更することを提案しています。逆も同様です。

  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");
     }
 }
}

これは私のビデオ ゲーム用の呪いフィルターです。私は何を間違っていますか?

4

5 に答える 5

1

user2089674 が提案したことを続行します。

呪いの言葉を含むメッセージを除外したいので、equalsIgnoreCase を使用する代わりに、contains を使用しますか?

あれは

for (String c : curse) {

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

于 2013-02-20T05:04:16.503 に答える
1

それぞれをチェックするには、curses をループする必要があります。

for (String c : curse) {
  ... do check ...
}
于 2013-02-20T04:56:37.840 に答える
1

前にも述べましたが、考え方としては、 のメソッド シグネチャはString.equalsIgnoreCase()String[]a をパラメーターとして受け入れないということです。

もう少し詳しく見てみましょう - あなたは を持っているかもしれませString[]んが、それは と同じではありませんString。自動販売機を使うのに 1 ドル札が必要なのに、20 ドルしか持っていないと考えてください。うまくいきません。

したがって、その配列のすべての要素を反復処理し、それらを介してフィードする必要がありますequalsIgnoreCase

これを行うには、次の 3 つの方法があります。

  1. 単純な for ループ

    for(int i = 0; i < curse.length(); i++) {
        if(curse[i].equalsIgnoreCase(event.getMessage()) {
            // logic
        }
    }
    
  2. 強化されたforループ

    for(String badWord : curse) {
        if(badWord.equalsIgnoreCase(event.getMessage()) {
          // logic
        }
    }
    
  3. Arrays.asList(T... a)を使用して配列を List コレクションに変換し、Iterator<String>それらを反復処理する

    List<String> badWords = Arrays.asList(curse);
    Iterator<String> badWordIterator = badWords.iterator();
    while(badWordIterator.hasNext()) {
        if(badWordIterator.next().equalsIgnoreCase(event.getMessage())) {
            // logic
        }
    }
    
于 2013-02-20T05:09:59.143 に答える
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");
 }
}
于 2013-02-20T04:57:55.610 に答える