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)

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.