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

domxaline -  
 domxaline -
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)
Configuration: Windows XP Internet Explorer 6.0

5 réponses

  1. domxaline
     
    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
  2. az_am Messages postés 17 Statut Membre
     
    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
  3. danimo
     
    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
  4. danimo
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question