Arrays.binarySearch ne trouve pas mon B
Bonjour,
J'ai un comportement qui me semble un peu étrange, mais peut être est-il normal, si vous pensez que oui, merci de m'éclairer sur ce phénomène.
J'ai le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| import java.util.Arrays;
public class Image {
public static void main(String[] args) {
String[] screen = new String[] {"DCBA"};
String dithered = "ACBD";
Image id = new Image();
System.out.println(id.count(dithered, screen));
}
public int count(String dithered, String[] screen) {
int result = 0;
int dithSize = dithered.length();
char[] ditheredChar = new char[dithSize];
for (int i = 0; i < dithSize; i++) {
ditheredChar[i] = dithered.charAt(i);
}
for (String line : screen) {
int screenSize = line.length();
for (int i = 0; i < screenSize; i++) {
char letter = line.charAt(i);
int toto = Arrays.binarySearch(ditheredChar, letter);
//Pour B toto affiche -2 alors que B est bien présent dans ma liste
if (toto >= 0) {
result++;
}
}
}
return result;
}
} |
Le programme devrai afficher en résultat 4 et il affiche 3 le problème se situe à la ligne commentée (~27).
En faisant le débug j'ai bien la lettre B qui apparaît dans mon tableau "ditheredChar" mais toto prends la valeur -2 au lieu de 2 et en regardant dans la javadoc ici http://docs.oracle.com/javase/6/docs...arySearch(char[],%20char)
Citation:
Note that this guarantees that the return value will be >= 0 if and only if the key is found.
Ce que je ne comprends pas c'est que la lettre B est bien présente et pour les trois autres le résultat de toto est correcte.
Merci pour votre aide.