Problème en Java (charAt(0) ) !
Résolu
Sisiniya
Messages postés
142
Date d'inscription
Statut
Membre
Dernière intervention
-
guillaume_74 -
guillaume_74 -
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 <<---
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 <<---
A voir également:
- Next().charat(0)
- Remettre a 0 un pc - Guide
- Numéro de téléphone excel 0 - Guide
- 0 barré clavier ✓ - Forum Programmation
- Excel différent de 0 ✓ - Forum Excel
- Formule excel si inférieur à 0 égal 0 ✓ - Forum Excel
29 réponses
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.
@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.
kmillo
Messages postés
53
Date d'inscription
Statut
Membre
Dernière intervention
2
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...
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 !!
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 !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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"?
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 .
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 .
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"?
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"?
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) ;
Au fait , sc c'est un objet de la classe Scanner , et voilà sa ligne dans le code :
Scanner sc = new scanner(System.in) ;
je crois pas que nextLine fonctionne comme ça, vois plutot avec ça http://www.docjar.com/docs/api/java/io/BufferedReader.html
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
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
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
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
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
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
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 <<---
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 <<---
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 .
Merci .
// 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"));
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"));