Recherche dans un tableau

Résolu
lekludo Messages postés 121 Date d'inscription   Statut Membre Dernière intervention   -  
lekludo Messages postés 121 Date d'inscription   Statut Membre Dernière intervention   -
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 4089 Date d'inscription   Statut Contributeur Dernière intervention   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 121 Date d'inscription   Statut Membre Dernière intervention   1
 
merci encore ca me soulage de savoir qu'on m'aide au moins merci

--
0