Recherche dans un tableau

Résolu/Fermé
lekludo Messages postés 121 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 14 février 2017 - 19 août 2013 à 11:36
lekludo Messages postés 121 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 14 février 2017 - 20 août 2013 à 08:05
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 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
19 août 2013 à 14:19
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 mardi 1 avril 2008 Statut Membre Dernière intervention 14 février 2017 1
20 août 2013 à 08:05
merci encore ca me soulage de savoir qu'on m'aide au moins merci

--
0