Java-présence d'un nom dans un tableau

Fermé
domxaline - 25 août 2009 à 15:02
 domxaline - 26 août 2009 à 15:09
Bonjour,
but de mon programe est:
Ecrire un programme qui demande à l' utilisateur d' entrer un caractère. Puis le programme affiche tous les noms pré-enregistrés dans le system et commençant par ce caractère. On ne tient pas compte de la casse du caractère (majuscule ou minuscule).
j'ai ecris mon programme ainsi:

import java.util.Scanner;
public class essaie
{
public static void main (String [] args)
  {
	String[]tab={"Simon","Chris","David","Sarko","Sego","Hardy","Patrick","Franck","Samir"};
    System.out.print("Entrez un nom:");
    Scanner sc=new Scanner(System.in);
    String c=sc.nextLine();
    System.out.println("la liste des noms commençant par "+ c + " est:");
    for(int i=0;i<tab.length;i++)
    {
    	if(tab[i].charAt(i)=='s'||tab[i].charAt(i)=='S')
    		System.out.println(tab[i]);
    }  
 }
}


je l'ai compilé et exécuté
le resultat n'est pas bon, quelqu'un peut m'aider

Entrez un nom:D
la liste des noms commençant par D est:
Simon
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.charAt(Unknown Source)
at essaie.main(essaie.java:14)

Entrez un nom:c
la liste des noms commençant par c est:
Simon
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.charAt(Unknown Source)
at essaie.main(essaie.java:14)
A voir également:

5 réponses

en corrigeant la ligne suivant
String[]tab={"Simon","Chris","David","Sarko","Sego","Hardy","Patrick","Franck","Samir"};

comme ceci:
String[]tab={"Simon","Chris","David","Sarko","Sego"};

prg marche mais resultat est faux

Entrez un nom:D
la liste des noms commençant par D est:
Simon

Entrez un nom:C
la liste des noms commençant par C est:
Simon

Entrez un nom:s
la liste des noms commençant par s est:
Simon
0
az_am Messages postés 15 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 31 août 2009
25 août 2009 à 17:17
salut,
essayer de remplacer l'instruction suivante :
if(tab[i].charAt(i)=='s'||tab[i].charAt(i)=='S')
System.out.println(tab[i]);

par celle ci:

if(tab[i].charAt(0)==toUpperCase(c) || tab[i].charAt(0)==toLowerCase(c))
System.out.println(tab[i]);
0
Utilisateur anonyme
25 août 2009 à 17:42
Salut,

 public static void main (String [] args)
      {
         String[]tab={"Simon","Chris","David","Sarko","Sego","Hardy","Patrick","Franck","Samir"};
         System.out.print("Entrez un nom:");
         Scanner sc=new Scanner(System.in);
         String c=sc.nextLine();
         c = c.toUpperCase(); // ajouter
         System.out.println("la liste des noms commençant par "+ c + " est:");
         for(int i=0;i<tab.length;i++)
         {
            //if(tab[i].charAt(i)=='s'||tab[i].charAt(i)=='S')
            if(tab[i].startsWith(c))
               System.out.println(tab[i]);
         }  
      }


Cordialement,

Dan
0
Utilisateur anonyme
25 août 2009 à 18:11
Re,

On peut aussi gérer le cas sans noms trouvés:

 public static void main (String [] args)
      {
         String[]tab={"Simon","Chris","David","Sarko","Sego","Hardy","Patrick","Franck","Samir"};
         System.out.print("Entrez un nom:");
         Scanner sc=new Scanner(System.in);
         String c=sc.nextLine();
         c = c.toUpperCase(); // ajouter
         boolean pasDeNom = false; // ajouter
         //System.out.println("la liste des noms commençant par "+ c + " est:");
         for(int i=0;i<tab.length;i++)
         {
            //if(tab[i].charAt(i)=='s'||tab[i].charAt(i)=='S')
            if(tab[i].startsWith(c))
            {  // ajouter
            // ajouter les 2 lignes qui suivent
               if (pasDeNom == false)
                  System.out.println("la liste des noms qui commencent par "+ c + " est:");
                  
               System.out.println(tab[i]);
               pasDeNom = true;  // ajouter
            }  //ajouter
         }
         // ajouter
         if (pasDeNom == false)
            System.out.println("Il n'y a pas de noms qui commencent par " + c);	
      }
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
merci beaucoup
0