Java:programme array

Fermé
domxaline - 17 mars 2012 à 18:08
 domxaline - 17 mars 2012 à 20:50
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


A voir également:

3 réponses

KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
17 mars 2012 à 18:34
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
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
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
Modifié par KX le 17/03/2012 à 20:44
"ç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
ok cool,ça marche
0