Java:programme array

domxaline -  
 domxaline -
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. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
  2. domxaline
     
    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. KX Messages postés 19031 Statut Modérateur 3 020
       
      "ç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