Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP Conversion température

Sujet résolu
    16 octobre 2018 à 17:46:02

    Bonjour, je débute en java et dans le cadre d'un TP je dois créer un convertisseur Celsius/Farenheit, voici mon code :

    public static void main(String[] args) 
    	{
    	double celsius;
    	double faren;
    	char reponse;
    	int conversion;
    	Scanner sc = new Scanner(System.in);
    	
    	 do
    	 {
    		System.out.println("CONVERTISSEUR DEGRES CELSIUS/FARENHEIT \n");
    		System.out.println("Choisissez le mode de conversion :");
    		System.out.println("1 - Conversion Celsius/Farenheit");
    		System.out.println("2 - Conversion Farenheit/Celsius");
    		conversion = sc.nextInt();
    		
    		if(conversion == 1)
    		{
    			System.out.println("Température à convertir :");
    			celsius = sc.nextDouble();
    			faren = (9 * celsius) / 5 + 32;
    			System.out.println(celsius + "°C correspond à : " + faren +"°F.");
    		}
    		else if(conversion == 2)
    		{
    			System.out.println("Température à convertir :");
    			faren = sc.nextDouble();
    			celsius = ((faren - 32) * 5) / 9;
    			System.out.println(faren + "°F correspond à : " + celsius +"°C.");
    		}
    		else
    		{
    			System.out.println("CONVERTISSEUR DEGRES CELSIUS/FARENHEIT \n");
    			System.out.println("Choisissez le mode de conversion :");
    			System.out.println("1 - Conversion Celsius/Farenheit");
    			System.out.println("2 - Conversion Farenheit/Celsius");
    			conversion = sc.nextInt();
    		}
    		
    		do
    		{
    			System.out.println("Souhaitez-vous convertir une autre température ?");
    			reponse = sc.nextLine().charAt(0);
    			
    		}while(reponse != 'O' && reponse != 'N');
    	 
    	 }while(reponse == 'O');
    	
    	 System.out.print("Au revoir !");
    	}			
    }
    

    le début du code s'exécute correctement dans la console mais apparait soudain le message d'erreur suivant :


    CONVERTISSEUR DEGRES CELSIUS/FARENHEIT

    Choisissez le mode de conversion :
    1 - Conversion Celsius/Farenheit
    2 - Conversion Farenheit/Celsius
    1
    Température à convertir :
    50
    50.0°C correspond à : 122.0°F.
    Souhaitez-vous convertir une autre température ?
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
        at java.lang.String.charAt(Unknown Source)
        at sdz1.main(sdz1.java:49)

    Première fois que je tombe dessus, j'ai l'impression qu'il bloque sur reponse = sc.nextLine().charAt(0); sauf que je comprends pas pourquoi... Quelqu'un pour me mettre sur la voie ? Toute remarque ou conseil concernant le petit morceau de code affiché plus haut sera vivement apprécié !

    Merci d'avance !

    -
    Edité par QuentinMallet4 16 octobre 2018 à 17:52:36

    • Partager sur Facebook
    • Partager sur Twitter
      17 octobre 2018 à 8:59:54

      La réponse est dans la JavaDoc, voici la description qu'on trouve pour la méthode nextLine :

      Advances this scanner past the current line and returns the input that was skipped.

      Maintenant imaginons que le scanner soit déjà arrivé en fin de ligne lorsqu'on appel nextLine, mais qu'il n'ai pas encore passé à la ligne...que se passe-t-il ? Combien y aura-t-il de caractères "skipped" ?

      • Partager sur Facebook
      • Partager sur Twitter

      TP Conversion température

      × 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