Erreur
Résolu
thenfs
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
thenfs Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
thenfs Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
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)
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)
A voir également:
- Erreur
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Java code erreur 1603 ✓ - Forum Windows
2 réponses
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)
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 :
Mails il serait bien aussi de trouver pourquoi tu avais une exception ligne 40...
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...