2012-11-04 40 views
1

如果我有多组数组,我想查看是否有两个值包含在任何数组中,我该如何去做。如何在int数组中找到两个不同的值?

这里是我试过之前:

public boolean multiIdTasks(int[] arrayToTest, int slayerTask, int npcKilled){ 
    for(int j = 0; j < arrayToTest.length; j++){ 
     if(arrayToTest[j] == slayerTask){ 
      if(confirmSlayerKill(arrayToTest, arrayToTest[j])){ 
       return true; 
      } else { 
       continue; 
      } 
     } 
    } 
    return false; 
} 

public boolean confirmSlayerKill(int[] arrayToTest, int npcKilled){ 
    for(int g = 0; g < arrayToTest.length; g++){ 
     if(arrayToTest[g] == npcKilled){ 
      return true; 
     } 
    } 
    return false; 
} 

我需要检查,如果杀了人大信息包含在被赋予的任务在数组中。例如,如果你的任务是一只鸟,并且你杀了一只老鹰,我希望任务的数量减少,但是我还没有找到一个很好的方法来检查任务的值和被杀死的NPC的值。

调用此方法是在这里:

public boolean getValidKills(int slayerTask, int npcKilled){ 
    if(multiIdTasks(SlayerData.BANSHEES, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.BATS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.BIRDS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.BEARS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.CAVE_BUGS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.CAVE_SLIMES, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.COWS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.DESERT_LIZARDS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.DOGS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.DWARVES, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.GHOSTS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.GOBLINS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.ICEFIENDS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.MINOTAURS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.MONKEYS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.SCORPIONS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.SKELETONS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.SPIDERS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.TROLLS, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.WOLVES, slayerTask, npcKilled) || 
     multiIdTasks(SlayerData.ZOMBIES, slayerTask, npcKilled)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

如果getValidKills为真,那么计数应该减少。但我不能让这个工作正常,任何人都可以帮忙吗?如果你需要更多的信息,然后让我知道...

回答

0
/** 
* Search for {@code value1} and {@code value2} in {@code array} array. 
* 
* @param array given array to be searched. 
* @param value1 value to be searched. 
* @param value2 value to be searched. 
* @return true if found both values in the given array. 
*/ 
private static boolean hasBothValues(int[] array, int value1, int value2) { 
    int totalMatches = 0; 
    for (int value : array) { 
     if (value == value1 || value == value2) 
      totalMatches++; 
     if (totalMatches >= 2) 
      return true; 
    } 
    return false; 
} 
+0

嗨,欢迎来到堆栈溢出!考虑在示例代码中添加一些注释,说明你在做什么。还要注意,如果数组中存在两个“value1”或“value2”,而另一个可能不存在,则代码无法正常工作。 :-) – Gijs

+1

上面的代码适用于一个小的变化,如果值相等,那么它应该总是返回true,否则它需要遍历指定的数组来检查是否有数组包含这两个值。谢谢你的答复哥们,并感谢你的帮助Gijs。 – Sillhouette

+0

我也想指出两次被检查的值都不会被包含在数组中,我自己写了数组,这正是我寻找的答案 – Sillhouette

相关问题