Erreur

Résolu/Fermé
thenfs Messages postés 2 Date d'inscription jeudi 9 janvier 2014 Statut Membre Dernière intervention 10 janvier 2014 - 9 janv. 2014 à 21:23
thenfs Messages postés 2 Date d'inscription jeudi 9 janvier 2014 Statut Membre Dernière intervention 10 janvier 2014 - 10 janv. 2014 à 17:30
bonjour,
ayant commencé la programmation il y a peu (4 jours) je suis un tuto mais je n'arrive pas a créer une boucle while avec une variable de type char je vous montre mon code :


import java.util.*;


public class first {
public static void main(String[] args) {
char reponse = 'o';
String str;
Scanner co = new Scanner (System.in);
while(reponse == 'o')
{
int temp;
System.out.println("Choisissez votre conversion: ");
System.out.println("1-Celsius vers Fahrenheit");
System.out.println("2-fahrenheit vers Celsius");
temp = co.nextInt();
switch (temp)
{
case 1:
System.out.println("température à convertir:");
double celsius = co.nextDouble();
double far = ((9.0 / 5.0) * celsius) + 32f;
System.out.println("température en fahrenheit :" + far);
break;
case 2:
double celsius2;

System.out.println("température à convertir:");
double far2 = co.nextDouble();
celsius2 = ( ( far2 - 32 ) * 5 ) / 9;
System.out.println("température en celsius :" + celsius2);

break;
default:
System.out.println("erreur");
}
System.out.println("recommencer?");
System.out.println("o/n");
str = co.nextLine();



}


co.close();

}
}





mon message d'erreur:




Choisissez votre conversion:
1-Celsius vers Fahrenheit
2-fahrenheit vers Celsius
1
température à convertir:
2
température en fahrenheit :35.6
recommencer?
o/n
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at first.main(first.java:40)

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
9 janv. 2014 à 21:37
Quand tu as une exception il faut toujours te référer à la documentation pour la comprendre.

Voici le lien général :
https://docs.oracle.com/javase/7/docs/api/

Et dans ton cas spécifique :
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#charAt(int)

Throws:
IndexOutOfBoundsException - if the index argument is negative or not less than the length of this string.

Vu l'exception tu as donc dans ton main (ligne 40) un charAt(0) appliqué à un String qui est vide. Cependant, je ne vois pas de charAt dans ton code, où est la ligne 40 ?

Remarque : avec Scanner il faut faire attention car nextInt, nextDouble etc. ne s'arrêtent pas au saut de ligne, du coup lorsque tu fais un nextLine ce n'est pas la ligne que tu penses que tu lis, mais la fin de la ligne des nextDouble/nextInt.

Ce qu'il faudrait faire c'est mettre un nextLine en plus à chaque fois :

int n = co.nextInt(); co.nextLine();
double d = co.nextDouble(); co.nextLine();
String s = co.nextLine();

Mails il serait bien aussi de trouver pourquoi tu avais une exception ligne 40...
0
thenfs Messages postés 2 Date d'inscription jeudi 9 janvier 2014 Statut Membre Dernière intervention 10 janvier 2014
10 janv. 2014 à 17:30
merci pour ta réponse rapide en effet j'ai fait une erreur le code que j'avais posté n'étais pas le bon ( je l'avais modifié entre temps)
0