Présence d'un nom dans un tableau

cs_domxaline Messages postés 327 Date d'inscription jeudi 21 août 2008 Statut Membre Dernière intervention 10 mai 2012 - 25 août 2009 à 15:06
cs_domxaline Messages postés 327 Date d'inscription jeudi 21 août 2008 Statut Membre Dernière intervention 10 mai 2012 - 25 août 2009 à 17:28
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)

6 réponses

cs_domxaline Messages postés 327 Date d'inscription jeudi 21 août 2008 Statut Membre Dernière intervention 10 mai 2012 2
25 août 2009 à 15:29
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
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
25 août 2009 à 15:36
Salut,

encore une fois, relis ce que tu écris.
Juste une piste, qu'as tu mis comme valeur pour le charAt() ?
0
cs_domxaline Messages postés 327 Date d'inscription jeudi 21 août 2008 Statut Membre Dernière intervention 10 mai 2012 2
25 août 2009 à 15:51
public class essaie
{
private static final String C = null;

public static void main (String [] args)
  {
String[]tab={"Simon","Chris","David","Sarko"};
    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].startsWith(c)||tab[i].startsWith(C))
    		System.out.println(tab[i]);
    }  
 }
}


resultat
Entrez un nom:s
Exception in thread "main" java.lang.NullPointerException
la liste des noms commençant par s est:
at java.lang.String.startsWith(Unknown Source)
at java.lang.String.startsWith(Unknown Source)
at essaie.main(essaie.java:16)


Entrez un nom:c
la liste des noms commençant par c est:
Exception in thread "main" java.lang.NullPointerException
at java.lang.String.startsWith(Unknown Source)
at java.lang.String.startsWith(Unknown Source)
at essaie.main(essaie.java:16)
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
25 août 2009 à 15:59
au risque de me répéter, relis ce que tu écris.
Ce que je t'ai proposé sur l'autre forum est correct, mais là tu ajoutes une variable qui sort d'on ne sait où !!
C'est quoi cette variable C ? tu l'ajoutes comme ça juste parce que le compilo te signale une erreur mais elle sert à quoi ?


public class essaie

{

public static void main (String [] args)

  {

String[]tab={"Simon","Chris","David","Sarko"};

    System.out.print("Entrez un nom:");

    Scanner sc=new Scanner(System.in);

    String c=sc.nextLine().toLowerCase();

    System.out.println("la liste des noms commençant par "+ c + " est:");

    for(int i=0;i<tab.length;i++)

    {

    	if(tab[i].toLowerCase().startsWith(c))

    		System.out.println(tab[i]);

    }  

 }

}
0

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

Posez votre question
ouabida10 Messages postés 57 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 9 janvier 2011 1
25 août 2009 à 16:09
salut mon ami....... voila ton pro corigé et n'esité pas de pose les question pour avoir bien comprend :

import java.util.Scanner;
public class ouabida {
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().toUpperCase();
System.out.println("la liste des noms commençant par "+ c + " est:");
for(int i=0;i<tab.length;i++)
{
if(tab[i].toUpperCase().charAt(0)==c.charAt(0)){

System.out.println(tab[i]);
}
}
}
}
0
cs_domxaline Messages postés 327 Date d'inscription jeudi 21 août 2008 Statut Membre Dernière intervention 10 mai 2012 2
25 août 2009 à 17:28
merci beaucoup,ça marche
0
Rejoignez-nous