Exception in thread "main" [Débutant Java]
Résolu
Deezio
Messages postés
41
Statut
Membre
-
Deezio Messages postés 41 Statut Membre -
Deezio Messages postés 41 Statut Membre -
Bonjour, je débute dans la programmation sous Java. J'ai essayé de m'exercer un peu et comme le conseil un tutoriel sur le Site du Zero, faire un convertisseur Celsius - Fahrenheit et vice-versa.
Cependant j'ai une erreur quand je le lance :
"Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at Convertisseur.main(Convertisseur.java:27)"
Voici mon programme (comme vous pourrez le constater, il n'est pas terminé) :
J'ai remarqué que lorsqu'il n'y a que des variables String dans la boucle, il n'y a pas de problème sauf qu'il me faut un variable float pour mon calcul. Comment faire ?
Merci pour votre aide et pour vos réponses.
Cependant j'ai une erreur quand je le lance :
"Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at Convertisseur.main(Convertisseur.java:27)"
Voici mon programme (comme vous pourrez le constater, il n'est pas terminé) :
import java.util.Scanner;
public class Convertisseur {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("CONVERTISSEUR DEGRES CELSIUS ET DEGRES FAHRENHEIT");
System.out.println("-------------------------------------------------");
char reponse = 'O';
do
{
System.out.println("Choisissez le mode de conversion :");
System.out.println("1 - Convertisseur Celsius - Fahrenheit");
System.out.println("2 - Convertisseur Fahrenheit - Celsius");
int mode = sc.nextInt();
if (mode == 1);
{
System.out.println("Temperature à convertir :");
float temp = sc.nextShort();
System.out.print(temp+" °C correspond à : ");
temp = (((9*temp)/5)+32);
System.out.println(temp+" °F.");
System.out.println("Souhaitez-vous convertir une autre temperature ?(O/N)");
}
reponse = sc.nextLine().charAt(0);
}while (reponse == 'O');
}
}
J'ai remarqué que lorsqu'il n'y a que des variables String dans la boucle, il n'y a pas de problème sauf qu'il me faut un variable float pour mon calcul. Comment faire ?
Merci pour votre aide et pour vos réponses.
A voir également:
- Exception in thread "main" [Débutant Java]
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Dc in - Forum Audio
- Waptrick java voiture - Télécharger - Jeux vidéo
- Deco in paris avis ✓ - Forum Consommation & Internet
2 réponses
Il faut se méfier du mélange nextInt / nextLine, en effet le premier lit un entier et s'arrête (il ne va pas jusqu'à la fin de la ligne) et le deuxième lui va jusqu'à la fin de ligne, mais en commençant là où en était resté, c'est à dire à la fin de la ligne de l'entier, pas de la ligne d'après !
Ce qu'il faudrait faire c'est mettre un nextLine juste après le nextInt afin de sauter la fin de ligne de l'entier, sinon quand tu feras le nextLine tu te retrouves avec un String vide et le charAt(0) plante !
Remarque : c'est pareil avec nextShort, par contre je ne vois pas pourquoi tu fais un nextShort pour récupérer un float, tu peux faire un nextFloat si tu veux !
Ce qu'il faudrait faire c'est mettre un nextLine juste après le nextInt afin de sauter la fin de ligne de l'entier, sinon quand tu feras le nextLine tu te retrouves avec un String vide et le charAt(0) plante !
int mode = sc.nextInt(); sc.nextLine(); // on finit la ligne
Remarque : c'est pareil avec nextShort, par contre je ne vois pas pourquoi tu fais un nextShort pour récupérer un float, tu peux faire un nextFloat si tu veux !