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 -
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
--
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:
- Recherche dans un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Imprimer un tableau excel - Guide
2 réponses
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é:
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"); } }