1

複数の配列セットがあり、いずれかの配列に 2 つの値が含まれているかどうかを確認したい場合、どうすればよいでしょうか。

これが私が以前に試したことです:

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 が与えられたタスクの配列に含まれているかどうかを確認する必要があります。たとえば、タスクが鳥でワシを殺す場合、タスクのカウントを減らしたいのですが、タスクの値と殺された 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;
    }
}

が true の場合getValidKills、カウントは減少するはずです。しかし、これを適切に機能させることはできません。誰か助けてもらえますか? さらに情報が必要な場合は、お知らせください...

4

1 に答える 1

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;
}
于 2012-11-04T23:30:41.513 に答える