Bonjour, J’ai récemment écrit le programme suivant qui, je ne sais pas pourquoi, ne marche pas. Lorsque je clique sur run, il s’exécute, mais le message suivant apparaît après la question demandant si l’utilisateur veut recommencer (la ligne 41 est celle de "wantToRestart = sc.nextLine().charAt(0);").
1 2 3 | Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0 at java.lang.String.charAt(Unknown Source) at fr.klimex.test1114.Main.main(Main.java:41)" |
Et voici le programme :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | package fr.monpseudo.monprojet; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int numberOfAnswer; int valueToConvert; int convertedValue; char wantToRestart = ' '; do{ System.out.println("Programme de conversion de degrès Celsius en degrès Farenheit\n"); System.out.println("Voulez-vous : "); System.out.println("1 : Convertir une température donnée en degrès Celsius en degrès Farenheit."); System.out.println("2 : Convertir une température donnée en degrès Farenheit en degrès Celsius.\n"); System.out.println("Tapez 1 ou 2 pour effectuer votre choix"); numberOfAnswer = sc.nextInt(); while(numberOfAnswer != 1 && numberOfAnswer != 2) { System.out.println("Erreur : vous n'avez pas donné un nombre correct. "); System.out.println("Tapez 1 ou 2 pour choisir votre conversion"); numberOfAnswer = sc.nextInt(); } System.out.println("Maintenant, veuillez donner la valeur à convertir"); valueToConvert = sc.nextInt(); if(numberOfAnswer == 1) { convertedValue = (9/5)*valueToConvert+32; System.out.println(valueToConvert + " degrès Celsius correspondent à " + convertedValue + " degrès Farenheit."); } else { convertedValue = ((valueToConvert-32)*5)/9; System.out.println(valueToConvert + " degrès Farenheit correspondent à " + convertedValue + "degrès Celsius"); } do{ System.out.println("Souhaitez-vous convertir une autre température ?(O/N)"); wantToRestart = sc.nextLine().charAt(0); } while(wantToRestart != 'O' && wantToRestart != 'N'); if (wantToRestart == 'O') { System.out.println("Vous avez choisi de recommencer."); } } while (wantToRestart == 'O'); } } |
Pourriez-vous me dire quelle est ma faute et me corriger s’il vous plaît ? Merci d’avance. P.S. Désolé si le message est tassé, mais le forum empêche trop de retours à la ligne. P.P.S. Le résultat souhaité est : 1 : Le message de présentation. 2 : La question du sens de conversion. 3 : La réponse de l’utilisateur visant à donner le sens de conversion (avec une gestion des mauvaises réponses). 4 : La question demandant la valeur à convertir. 5 : L’affichage du résultat de la conversion. 6 : La question demandant si l’utilisateur veut recommencer. 7 : La réponse de l’utilisateur à cette dernière question. 8 : La répétition du programme si la réponse de l’utilisateur est "O".