Java:programme array

Bonjour,
j'ai écrit ce programme mais le dernier me donnes résulat fausse;pouvez vous m'aidez svp
public class Whiletest2 
{
	public static void main(String[]args)
	{ 
		int[]array={32,87,3,589,12,1076,2000,8,622,127};
		int searchVal=12;
		int i=0;
		boolean found=false;
		for(;i<array.length;i++)
		{
			if(array[i]==searchVal)
			{
				found=true;
			}
		}
		if(found)
		{ 
			System.out.println("Found "+searchVal+" at index "+i);
		}
		else
		{
		System.out.print(searchVal+"not in the array");
		}
	}	
}


resultat que je obtiens:
Found 12 at index 10

aidez moi svp

3 réponses

  1. Modérateur
    Malgré le fait que tu mettes found=true, tu continues ta boucle, donc i est incrémenté jusqu'à atteindre array.length. Ce qu'il te faut c'est arrêter la boucle.

    i<array.length && !found
    0
    1. encore un question bête
      array lit toujours à partir de 0 n'est ce pas
      mon résultat est:
      Found 12 at index 5
      ça semble pas bizarre?
      0
      1. Modérateur
        "ça semble pas bizarre?" que ce soit décalé de 1 ?
        Non, parce que le i++ a lieu avant le test de la condition d'arrêt, il suffit de prendre i-1 pour être correct.
        Une autre solution consiste à utiliser le mot clé break, certains le trouvent "sal" mais il a ses avantages :

        for (i=0; i<array.length; i++) 
        { 
        	if (array[i]==searchVal) 
        	{ 
        		found=true; 
        		break; 
        	} 
        }
        0