Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Erreur] boucle While TP conversion Fahrenheit

    21 novembre 2014 à 18:32:04

    Bonjour à tous,
    C'est mon premier message sur ce forum alors soyez indulgent :-)

    Je suis actuellement en train de faire le cours pour apprendre le Java et je suis encore un petit Zéro (qui à dit un gros ?). J'essaye de faire attention à bien lire et comprendre complètement un cours avant de passer au suivant. Je suis maintenant arrivé au TP sur le convertisseur entre degrés Celsius et degrés Fahrenheit. J'ai essayé de vraiment jouer le jeu et de le faire sans regarder le résultat final. Seulement voila, ca ne fonctionne pas alors qu'il me semble que ca devrait. Certains me diront surement regarde la correction du TP mais voila la méthode est un peu différente de celle que j'ai utilisée or je pense que la mienne pourrait fonctionner aussi. C'est pourquoi avant de refaire le TP avec la méthode de la correction je voudrais comprendre pourquoi mon code ne fonctionne pas.

    Sans plus attendre voici le code

    import java.util.Scanner;
    
    public class ConvertisseurCelsiusFahrenheit {
    
    	public static void main(String[] args) {
    		// TODO TP conversion Celsius - Fahrenheit
    		
    		System.out.println("-------------------------------------------------\nCONVERTISSEUR DEGRÉS CELSIUS ET DEGRÉS FAHRENHEIT\n-------------------------------------------------");
    				Scanner sc = new Scanner (System.in);
    		char reponse = 'O';
    		int mode = 0;
    		double temperature, resultat;
    		
    		while (reponse == 'O')
    		{
    			
    			while (mode != 1 && mode != 2) // Verification de l'entrée clavier de l'utilisateur
    			{
    			System.out.println("Choisissez le mode de conversion : \n1 - Convertisseur Celsius - Fahrenheit \n2 - Convertisseur Fahrenheit - Celsius");
    			mode = sc.nextInt();
    			}
    			
    				if (mode == 1) // Conversion Celsius - Fahrenheit
    						{
    							System.out.println("Température à convertir");
    							temperature = sc.nextInt();
    							resultat = 9.0/5.0*temperature+32.0; 
    							System.out.println(+temperature+"°C correspond à : " +resultat+ "°F.");
    						}
    				else if (mode == 2) // Conversion Fahrenheit -Celcius
    						{
    							System.out.println("Température à convertir");
    							temperature = sc.nextInt();
    							resultat = (temperature-32.0)*5/9 ; 
    							System.out.println(+temperature+"°F correspond à : " +resultat+ "°C.");
    						}
    				else // Cette condition ne doit jamais être remplie
    						{
    							System.out.println("Erreur Systeme, ce message ne doit pas apparaitre");
    						}
    
    				System.out.println("Souhaitez-vous convertir une autre temperature ? (O/N)"); // relancer le programme
    				reponse = sc.nextLine().charAt(0);
    				
    		}
    		System.out.print("Ce programme est terminé. \nMerci de votre fidélité");
    	}
    
    } 

    Le truc c'est que je n'ai pas d'erreur directement dans eclipse (crois rouge) et aucun message d'avertissement quand je lance le programme. Mais une fois que j'ai lancer une conversion au moment où je devrais avoir le choix pour relancer une conversion j'ai un message d'erreur

    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    	at java.lang.String.charAt(String.java:686)
    	at ConvertisseurCelsiusFahrenheit.main(ConvertisseurCelsiusFahrenheit.java:43)

    Je vous remercie d'avance pour votre aide précieuse. Et si j'ai fait des erreurs dans la mise en forme du code ou que mon message n'est pas au bon endroit j'en suis désolé.

    • Partager sur Facebook
    • Partager sur Twitter
      22 novembre 2014 à 11:56:16

      bonjour !

      moi je pense que la premiere fois que boucle finie pour recommencer les variables mode et reponse seront à 1 ou 2 ou 'O'. le mieux c'est de metrre a zero la variable mode au debut de la grande boucle .de plus o niveau de if mode ==1tu mets System.out.println(+ temperature+.....) enleve le premier + la ba .

      • Partager sur Facebook
      • Partager sur Twitter
      openclassroom fait vraiment boom au coeur

      [Erreur] boucle While TP conversion Fahrenheit

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown