Recherche dans un tableau

Résolu
lekludo Messages postés 144 Statut Membre -  
lekludo Messages postés 144 Statut Membre -
Bonjour, je suis nouveau en programmation java et j'essaye un pti programme de recherche dans un tableau qui me tracasse j'aimerai que vous m'éclairez sur ce qui ne va pas. Voici le code source:
import java.util.Scanner;
public class recherchtab {

public static void main(String[] args) {
// TODO Auto-generated method stub
int tab[]={0,2,4,6,8};
int i=0;
System.out.println("Saisir un nombre pair");
Scanner src =new Scanner(System.in);
int nb=src.nextInt();
boolean tr=false;
while (tr==false && i<tab.length)
{
if(nb==tab[i])
tr=true;
else
i++;
}
if(tr==true)
System.out.println("le nombrer "+nb+" se trouve dans ce tableau et est à la position "+i+ " du tableau");
else
System.out.println("le nombrer "+tab[i]+" ne se trouve pas dans ce tableau");
}

}


merci d'avance
--
A voir également:

2 réponses

kij_82 Messages postés 4260 Statut Contributeur 857
 
Bonjour,

Plusieurs corrections :
- de la manière dont ta boucle est faite, il est plus simple de commencer avec un indice égal à -1, et de faire l'incrémentation automatique de 1 dans le test de ta boucle, avant (via le ++i dans le code corrigé)
- l'incrémentation du compteur i dans la boucle disparait donc (qui plus est, il ne devait pas être conditionné comme tu l'as fait ! On incrémente toujours, peu importe que le résultat soit trouvé ou non)
- Pour checker la valeur FALSE d'un bouléan, utilises plutot l'opérateur '!' de négation, c'est plus lisible.
- J'ai modifier l'affichage (inversion des valeurs utilisées dans les system.out.println, ainsi qu'un incrément de 1 sur le compteur 'i' lors de l'affichage du message, de manière à avoir une position humainement lisible (plutot que d'obtenir un décalage: position 0, 1, ...)

Code de ta fonction corrigé:
public static void main(String[] args) {
		// TODO Auto-generated method stub
		int tab[]={0,2,4,6,8};
		int i=-1;
		System.out.println("Saisir un nombre pair");
		Scanner src =new Scanner(System.in);
		int nb=src.nextInt();
		boolean tr=false;

		while (!tr && (++i<tab.length)){
			if(nb==tab[i]) {
				tr=true;
			}
		}

		if(tr) {
			System.out.println("le nombrer "+tab[i]+" se trouve dans ce tableau et est à la position "+(i+1)+ " du tableau");
		} else {
			System.out.println("le nombrer "+nb+" ne se trouve pas dans ce tableau");
		}
	}

1
lekludo Messages postés 144 Statut Membre 1
 
merci encore ca me soulage de savoir qu'on m'aide au moins merci

--
0