Problème en Java (charAt(0) ) !

Résolu/Fermé
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 - 21 sept. 2008 à 00:31
 guillaume_74 - 1 nov. 2008 à 00:02
Bonjour,

Quand je compile mon programme , aucune erreur n'est détécté . Or , lors de l'exécution toute les lignes du code s'exécutent jusqu'à ce qu'il arrive à ce bloc érctit en dessous , et il m'affiche erreur et voilà ce qu'on m'affiche :

********************************************************************************
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
********************************************************************************
// Voilà la partie d'où vient l'erreur
char reponse = ' ' ;
do
{
System.out.println("Voulez-vous continuer O/N ? ");
reponse = sc.nextLine().charAt(0);

}while( reponse != 'O' && reponse != 'N');


Aidez - moi S'il vous Plaît !

Sisiniya .--
 Au travail, le plus difficile, c'est d'allumer la petite lampe du cerveau. Après, ça brûle tout seul. 
                                      --->> auteur : Jules Renard <<---

29 réponses

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
21 sept. 2008 à 02:52
Bonsoir,
@kmillo : ouai, souvent on lit l'entrée standard directement en faisant un System.in.read()... Je ne connaissais pas l'existance de la classe Scanner personnellement.

Comme le dit Donuts08, nextLine() n'a pas l'air faite pour ça. Pourquoi n'utilises-tu pas next().charAt(0) comme le montre l'exemple de l'API ?

Codialement.
2
kmillo Messages postés 53 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 26 juin 2016 2
21 sept. 2008 à 02:57
merci marco pour le System.in.read() ca fait 4 ans que j'ai pas progammer et j'avais qu'unpetit niveau, mais j'ai envie de m'y remettre...
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
21 sept. 2008 à 00:33
bonjour,

essai de séparer la capture de la réponse et la recherche du premier caractère
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
21 sept. 2008 à 00:41
Vous vouslez dire comme ça :
char carac = ' ' ;
String reponse = new String();
do
{
System.out.println("Assurez-vous que l'imprimante est prête");
System.out.println("Si vous êtes prête,tapez O sinon tapez N ");
reponse = sc.nextLine();
carac = reponse.charAt(0);
}while( carac1 != 'O' && carac1 != 'N');

si c'est ce que vous voulez dire , et bien je l'ai essayé mais le même erreur s'est produit . Je crois qu'il me manque dans mon compilateur une classe !!
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
21 sept. 2008 à 00:42
pardon c'est pas carac1 mais c'est carac ( faute de frappe ! )
0

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

Posez votre question
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
21 sept. 2008 à 00:44
si tu affiches la réponse quand tu l'a saisie, est-ce qu'elle est bien récupéré? il y a bien quelque chose dans "reponse"?
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
21 sept. 2008 à 00:49
j'ai ajouté cette ligne à ce bloc là : System.out.println("voilà" + carac1); Mais , vous savez quoi ? même cette ligne n'ai pas éxécuté et il m'affiche le même message d'erreur .
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
21 sept. 2008 à 00:49
j'ai ajouté cette ligne à ce bloc là : System.out.println("voilà" + carac1); Mais , vous savez quoi ? même cette ligne n'ai pas éxécuté et il m'affiche le même message d'erreur .
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
21 sept. 2008 à 00:51
essai:

char carac = ' ' ;
String reponse = new String();
do
{
System.out.println("Assurez-vous que l'imprimante est prête");
System.out.println("Si vous êtes prête,tapez O sinon tapez N ");
reponse = sc.nextLine();
System.out.println(reponse);
carac = reponse.charAt(0);
}while( carac1 != 'O' && carac1 != 'N');

tu vois ta réponse apparaitre ou pas?

en plus, c'est quoi "sc"?
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
21 sept. 2008 à 00:56
Même message d'erreur et il ne m'affiche pas le contenu de reponse . ( je crois le problème est en relation avec charline(0) .

Au fait , sc c'est un objet de la classe Scanner , et voilà sa ligne dans le code :
Scanner sc = new scanner(System.in) ;

0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
21 sept. 2008 à 01:10
je crois pas que nextLine fonctionne comme ça, vois plutot avec ça http://www.docjar.com/docs/api/java/io/BufferedReader.html
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
21 sept. 2008 à 01:15
D'accord , je vais sûrement le consulter .

Merci pour vos remarques << donuts08 >>
0
kmillo Messages postés 53 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 26 juin 2016 2
21 sept. 2008 à 02:31
tu travaille dans la console? ce n'est pas (sc.nextLine) pour recuperer les infos. là je ne sait plus mais je te tiens au jus.
en entendant essaie :
char reponse = ' ' ;
do
{
System.out.println("Voulez-vous continuer O/N ? ");
reponse = 'O';

}while( reponse != 'O' && reponse != 'N');


au moins tu verra si ca marche, mais moi j'utiliser autrechose pour lire les info de la cosole
0
alexdelareunion Messages postés 545 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 9 octobre 2023 142
21 sept. 2008 à 08:50
Salut, la classe Scanner est nouvelle (question con es-tu sûr que ton sdk est assez récent). Par contre la syntaxe est bonne d'après ce que je lis ici :
http://www.labo-sun.com/resource-FR-codesamples-416-0-java-io-recuperation-de-donnees-grace-a-la-nouvelle-classe-scanner-java-5-0-.htm
A ta place je suivrai le conseil du message 11 de kmillo pour bien être sûr que le début est juste
0
Utilisateur anonyme
21 sept. 2008 à 09:49
Bonjour,

Ta frappe est récupérée dans un String !

Comme ca c'est ok:

Scanner sc = new Scanner(System.in) ;


String entree = "";
char reponse = ' ' ;
do
{
System.out.println("Voulez-vous continuer O/N ? ");
entree = sc.nextLine();
reponse = entree.charAt(0);

}while((reponse != 'O') && (reponse != 'N'));


Mais charAt n'est pas nécessaire :
while ((!entree.equals("O")) && (!entree.equals("N"))); ferait l'affaire.

Cordialement.

Dan
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
21 sept. 2008 à 23:45
Pour la Réponse de Danimo :

En utilisant cette ligne while ((!entree.equals("O")) && (!entree.equals("N"))); Heureusement le massage d'erreur est disparu , mais le problème c'est qu'il m'affiche "Voulez-vous continuer O/N ?" deux fois à la fois , et quand je tape par exemple O il reaffiche "Voulez-vous continuer O/N ?" . C'est comme si la condition ne sera jamais verifiée .

Vous avez quelques Supposition ?

Je vous remercie tous pour vos réponse .


Sisiniya .--
 Au travail, le plus difficile, c'est d'allumer la petite lampe du cerveau. Après, ça brûle tout seul. 
                                      --->> auteur : Jules Renard <<---
0
Utilisateur anonyme
22 sept. 2008 à 04:02
Bonjour,

Le mieux serait que tu nous montres ton code tel qu'il est actuellement.

Cordialement. Dan
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
22 sept. 2008 à 00:03
Tu as un java chelou moi avec l'une ou l'autre ça fonctionne sans souci.
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
22 sept. 2008 à 00:14
Je travaille avec Eclipse
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
22 sept. 2008 à 00:31
Moi aussi :)
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
22 sept. 2008 à 00:37
Alors , svp dis moi qu'est ce qui me manque ? en fait , je suis débutante en java . Je viens juste de l'apprendre !

Merci .
0
Salam,

rep = Next().charAt(0);

apparemment il n'a pas de probléme avec la char mais plutot avec la String vu que tu lui demande d'extraire le premiére caractére de ce string qui est déclaré autant que char.

Bon courage :)
0
Achraf > Achraf
31 oct. 2008 à 18:48
désolé

rep =sc.next().charAt(0);
0
// Voilà la partie d'où vient l'erreur
char reponse = ' ' ;
do
{
System.out.println("Voulez-vous continuer O/N ? ");
reponse = sc.nextLine().charAt(0);

}while( reponse != 'O' && reponse != 'N');

=====================================

String reponse = "";
do
{
System.out.println("Voulez-vous continuer O/N ? ");
reponse = sc.next();;

}while(!reponse .EqualsIgnoreCase("O") && !reponse.EqualsIgnoreCase("N"));
0