Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图压缩else if语句_Java_Configuration Files_Bukkit - Fatal编程技术网

Java 试图压缩else if语句

Java 试图压缩else if语句,java,configuration-files,bukkit,Java,Configuration Files,Bukkit,我目前有以下代码: if(event.getMessage().contains(plugin.getConfig().getString("PBSwears.words.word1"))) { String message = event.getMessage().replaceAll(plugin.getConfig().getString("PBSwears.blocked.word1"), plugin.getConfig().getString("PBS

我目前有以下代码:

    if(event.getMessage().contains(plugin.getConfig().getString("PBSwears.words.word1")))
    {
        String message = event.getMessage().replaceAll(plugin.getConfig().getString("PBSwears.blocked.word1"), plugin.getConfig().getString("PBSwears.replace.word1"));
        event.setMessage(message);
    } 
    else if(event.getMessage().contains(plugin.getConfig().getString("PBSwears.words.word2")))
    {
        String message = event.getMessage().replaceAll(plugin.getConfig().getString("PBSwears.blocked.word2"), plugin.getConfig().getString("PBSwears.replace.word2"));
        event.setMessage(message);
    }
它将持续大约6次…我试图把它浓缩成这样的东西:

    String number = {find whitch number the message contains};
    if(event.getMessage().contains(plugin.getConfig().getString("PBSwears.words.word" + number)))
    {
        String message = event.getMessage().replaceAll(plugin.getConfig().getString("PBSwears.blocked.word" + number), plugin.getConfig().getString("PBSwears.replace.word" + number));
        event.setMessage(message);
    } 
但我正在努力寻找单词包含在哪个数字中(PBSwears.words.word1或PBSwears.words.word2)。我试过这样的方法:

    char number='0';
    if(event.getMessage().contains(plugin.getConfig().getString("PBSwears.words.word1")))
    {
        number='1';
    }
    else if(event.getMessage().contains(plugin.getConfig().getString("PBSwears.words.word2")))
    {
        number='2';
    }
PBSwears:
  blocked:
    word1: *insert vulgar language*
    word2: *insert vulgar language*
  replace:
    word1: *insert funny replacement*
    word2: *insert funny replacement*
public Map<String, String> replacementWords = new HashMap<String, String>();
public String getWordReplacement(String word)
{
   if (replacementWords.containsKey(word) {
      return replacementWords.get(word);
   }

   return word;
}
但是,还有大量的else-if语句。 另外,我正在从一个配置文件中读取如下所示的值:

    char number='0';
    if(event.getMessage().contains(plugin.getConfig().getString("PBSwears.words.word1")))
    {
        number='1';
    }
    else if(event.getMessage().contains(plugin.getConfig().getString("PBSwears.words.word2")))
    {
        number='2';
    }
PBSwears:
  blocked:
    word1: *insert vulgar language*
    word2: *insert vulgar language*
  replace:
    word1: *insert funny replacement*
    word2: *insert funny replacement*
public Map<String, String> replacementWords = new HashMap<String, String>();
public String getWordReplacement(String word)
{
   if (replacementWords.containsKey(word) {
      return replacementWords.get(word);
   }

   return word;
}

任何洞察都会非常有用。

以下内容中唯一的一点是必须定义
MAX\u COUNT
。如果您知道要检查6次,那么将其定义为6,依此类推

public int getCorrectNumber() {
    for(int i = 1; i <= MAX_COUNT; i ++) {
        if(event.getMessage().contains(plugin.getConfig().getString("PBSwears.words.word" + i))) {
            return i;
        }
    }

    return -1;
}
你为什么不迭代呢

String[] badWords = {"word1", "word2", ...};
for (int i=0; i<badWords.length; i++){

  if(event.getMessage().contains(plugin.getConfig().getString("PBSwears.words." + badWords[i]))){
     String message = event.getMessage().replaceAll(plugin.getConfig().getString("PBSwears.blocked." + badWords[i]), plugin.getConfig().getString("PBSwears.replace." + badWords[i]));
     event.setMessage(message);
  }
}
String[]badWords={“word1”、“word2”、…};

对于(int i=0;i,我建议加载一个映射,其中包含由阻塞字键入的替换字。然后,您可以使用如下方法:

    char number='0';
    if(event.getMessage().contains(plugin.getConfig().getString("PBSwears.words.word1")))
    {
        number='1';
    }
    else if(event.getMessage().contains(plugin.getConfig().getString("PBSwears.words.word2")))
    {
        number='2';
    }
PBSwears:
  blocked:
    word1: *insert vulgar language*
    word2: *insert vulgar language*
  replace:
    word1: *insert funny replacement*
    word2: *insert funny replacement*
public Map<String, String> replacementWords = new HashMap<String, String>();
public String getWordReplacement(String word)
{
   if (replacementWords.containsKey(word) {
      return replacementWords.get(word);
   }

   return word;
}
publicmap replacementWords=newhashmap();
公共字符串getWordReplacement(字符串字)
{
if(替换词.containsKey(词){
返回replacementWords.get(word);
}
返回词;
}
您必须预先填充地图,如下所示:

public void populateReplacementWordMap() {
   int numberOfWords = 6;
   for (int i = 1; i <= numberOfWords; i++) {
      String blockedWord = plugin.getConfig().getString("PBSwears.blocked.word" + i);
      String replacementWord = plugin.getConfig().getString("PBSwears.replace.word" + i);

      replacementWords.put(blockedWord, replacementWord);
   }
}
public void populateReplacementWordMap(){
int numberOfWords=6;

对于(int i=1;i听起来,这其中的大部分可以重构为一个helper方法,其变化通过方法参数表示。除非MAX_COUNT=1@Salauyou哎哟,那是个打字错误。刚刚修好。谢谢。这个工作做得很好。真不敢相信我想不出像这样的东西。顺便说一句,看看如何使用
 HashMap
s,如下所述,在进一步的重构中。当然,它会让您更改API,但在性能方面要好得多。