J'ai un tableau qui est un octet [] d'un fichier que j'ai lu. J'ai besoin de vérifier les 5 premiers octets du fichier. Pour commencer, je l'ai fait:Java: Arrays.equals ne fonctionne pas
if (ips_bytes[0] != ips_ident[0] && ips_bytes[1] != ips_ident[1] && ips_bytes[2] != ips_ident[2]
&& ips_bytes[3] != ips_ident[3] && ips_bytes[4] != ips_ident[4]) {
return "Nope!";
}
Cela fonctionne, mais il ne semble pas très agréable et je pense que ce n'est pas très efficace. J'ai donc regardé dans d'autres méthodes et trouvé Arrays.equals(). J'ai changé mon code pour indiquer que:
if (!Arrays.equals(ips_ident, Arrays.copyOfRange(ips_bytes, 0, 4))) {
return "Baka";
}
Cela ne fonctionne pas, et j'ai essayé 0, 4 et 1, 5 pour voir si les plages étaient différentes. Ai-je manqué quelque chose parce que cela semble correct? Les valeurs du tableau sont définitivement correctes.
Peut-être que les tableaux ne sont pas égaux – aaronman
Votre premier exemple évalue seulement à 'true' si every single comparison_ échoue (vous utilisez' '&&). Le second échouera si la comparaison _any_ échoue. La logique n'est même pas proche de similaire. – jahroy
Vous voulez utiliser 'Arrays.copyOfRange (ips_bytes, 0, ips_ident.length)' pour être sûr que vous obtenez une gamme d'éléments correspondants – MadProgrammer