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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)
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.Note that this guarantees that the return value will be >= 0 if and only if the key is found.
Merci pour votre aide.
Partager