Java-présence d'un nom dans un tableau
domxaline
-
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:
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)
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
-
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 -
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]); -
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 -
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); } -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -