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
326
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
544
Date d'inscription
dimanche 18 mars 2007
Statut
Membre
Dernière intervention
24 février 2012
141
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
9373
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 363
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
9373
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 363
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