Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP conevrtisseur de température en Java

pour la Nième fois...

11 décembre 2013 à 2:49:51

Bonjour,
Cela fait plusieurs heures que j'essaye de faire marcher complétement mon projet, en vain ...
J'ai également fait un copié collé du code proposé par le rédacteur du tuto et il ne fonctionne pas non plus.
J'obtiens soit :
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
soit:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Unreachable code

en fonction de là ou je mets les lignes suivantes:

System.out.println ("Voulez vous convertir une autre température ?");
				reponse = sc.nextLine().charAt(0);


Je ne sais plus quoi faire .... J'ai regardé les réponses qui avaient déjà été donné pour cette question mais je n'arrive malgrès tout pas a faire marcher mon code complétement.
Je vous mets l’entièreté de mon code pour que vous me disiez ce que je peux faire:

import java.util.*;

import java.util.*;

public class Entrainement1 {
        public static void main(String[] args){
           
            System.out.println ("COVERTISSEUR DEGRÉS CELSIUS ET DEGRÉS FAHRENHEIT");
            System.out.println ("-------------------------------------------------");
           
            Scanner sc = new Scanner(System.in);
           
            char reponse = 'O';
            while (reponse == 'O')
            {
            System.out.println ("Choisissez le mode de conversion :");
            System.out.println ("1 - Convertisseur en Celsius - Fahrenheit");
            System.out.println ("2 - Convertisseur en Fahrenhait - Celsius");
           
            int i = sc.nextInt();
           
                switch (i){
                case 1:
                    System.out.println ("Température à convertir");
                    double réponse1 = sc.nextDouble();
                    double F = ( réponse1 * 9 / 5 ) + 32;
                    System.out.println (réponse1 + "°C correspond à : " + F + "°F.");
                    System.out.println ("Voulez vous convertir une autre température ?");
                    break;
           
                case 2:
                    System.out.println ("Température à convertir");
                    double réponse2 = sc.nextDouble();
                    double C = ( réponse2 * 5 / 9 ) - 32;
                    System.out.println (réponse2 + "°F correspond à : " + C + "°C.");
                    System.out.println ("Voulez vous convertir une autre température ?");
                    break;
                   
                }
                    System.out.println ("Voulez vous convertir une autre température ?");
                reponse = sc.nextLine().charAt(0);
            }
                   
        }


Pouvez vous m'aider ?

Merci d'avance

-
Edité par viscoboy 11 décembre 2013 à 2:51:53

  • Partager sur Facebook
  • Partager sur Twitter
11 décembre 2013 à 3:34:42

Pourquoi à tu mis ça ?
                    System.out.println ("Voulez vous convertir une autre température ?");
                reponse = sc.nextLine().charAt(0);

lorsque l'on enlève ces lignes tout fonctionne correctement . je ne vois pas vraiment le but de ces lignes .
  • Partager sur Facebook
  • Partager sur Twitter
11 décembre 2013 à 9:48:09

Salut Viscoboy,

Peut-être n'as-tu pas bien compris le fonctionnement de la méthode nextLine(). Tu trouveras la solution à ton problème ici.

  • Partager sur Facebook
  • Partager sur Twitter
11 décembre 2013 à 19:26:21

Neolex a écrit:

Pourquoi à tu mis ça ?

                    System.out.println ("Voulez vous convertir une autre température ?");
                reponse = sc.nextLine().charAt(0);


lorsque l'on enlève ces lignes tout fonctionne correctement . je ne vois pas vraiment le but de ces lignes .


Le but de ces lignes serait de permettre de choisir si oui ou non on veut recommencer la boucle while. Donc ça fonctionne bien sans mais le but est de permettre de choisir si on veux recommencer.

Effectivement Spacelnvader, j'avais omis un détail. Il manquait en effet la fonction: sc.nextLine().

System.out.println ("voulez vous convertir une autre température (Oui/Non)?");
sc.nextLine();
reponse = sc.nextLine().charAt(0);


Merci pour vos réponses :)

  • Partager sur Facebook
  • Partager sur Twitter
12 décembre 2013 à 15:11:56

Tu peux essayer genre avec ça non ? :

import java.util.*;
 
public class Entrainement1 {
        public static void main(String[] args){
            do{
            System.out.println ("COVERTISSEUR DEGRÉS CELSIUS ET DEGRÉS FAHRENHEIT");
            System.out.println ("-------------------------------------------------");
            
            Scanner sc = new Scanner(System.in);
            
            char reponse = 'O';
            while (reponse == 'O')
            {
            System.out.println ("Choisissez le mode de conversion :");
            System.out.println ("1 - Convertisseur en Celsius - Fahrenheit");
            System.out.println ("2 - Convertisseur en Fahrenhait - Celsius");
            
            int i = sc.nextInt();
            
                switch (i){
                case 1:
                    System.out.println ("Température à convertir");
                    double réponse1 = sc.nextDouble();
                    double F = ( réponse1 * 9 / 5 ) + 32;
                    System.out.println (réponse1 + "°C correspond à : " + F + "°F.");
                    System.out.println ("Voulez vous convertir une autre température ?");
                    break;
            
                case 2:
                    System.out.println ("Température à convertir");
                    double réponse2 = sc.nextDouble();
                    double C = ( réponse2 * 5 / 9 ) - 32;
                    System.out.println (réponse2 + "°F correspond à : " + C + "°C.");
                    System.out.println ("Voulez vous convertir une autre température ?");
                    break;
                    
                }

	        bool continuer;
	        System.out.println ("Voulez vous refaire ?:");
                System.out.println ("1 - Oui");
                System.out.println ("2 - Non");

	
                int j = sc.nextInt();
            
                switch (j){
                case 1:
                    continuer=true;
                    break;
	        case 2:
                    continuer=false;
                    break;

	       }while(continuer);
            }
                    
        }



-
Edité par Elvinz 12 décembre 2013 à 15:16:36

  • Partager sur Facebook
  • Partager sur Twitter
5 septembre 2020 à 20:23:57

Bonjour,

je suis débutant avec zéro expérience en programmation sauf quelque notion de base en html css javascript

je suis arrivé au TP convertisseur C° en F° et vice versa

je veux seulement comprendre le code si quelqu'un a du temps de me l'expliqué je serai reconnaissant

merci d'avance

import java.util.Scanner;

class projet {
  public static void main(String[] args) {
    //Notre objet Scanner
    Scanner sc = new Scanner(System.in);

    //initialisation des variables
    double aConvertir, convertit=0;
    char reponse=' ', mode = ' ';

    System.out.println("CONVERTISSEUR DEGRÉS CELSIUS ET DEGRÉS FAHRENHEIT");
    System.out.println("-------------------------------------------------");
    
    do{//tant que reponse = O //boucle principale
       
      do{//tant que reponse n'est pas O ou N
        mode = ' ';
        System.out.println("Choisissez le mode de conversion : ");
        System.out.println("1 - Convertisseur Celsius - Fahrenheit");
        System.out.println("2 - Convertisseur Fahrenheit - Celsius ");
        mode = sc.nextLine().charAt(0);
       
        if(mode != '1' && mode != '2')
          System.out.println("Mode inconnu, veuillez réitérer votre choix.");

      }while (mode != '1' && mode != '2');
       
      //saisie de la température à convertir
      System.out.println("Température à convertir :");
      aConvertir = sc.nextDouble();
      //Pensez à vider la ligne lue
      sc.nextLine();
     
      //Selon le mode, on calcule différemment et on affiche le résultat
      if(mode == '1'){
        convertit = ((9.0/5.0) * aConvertir) + 32.0;
        System.out.print(aConvertir + " °C correspond à : ");
        System.out.println(arrondi(convertit, 2) + " °F.");
      }
      else{
        convertit = ((aConvertir - 32) * 5) / 9;
        System.out.print(aConvertir + " °F correspond à : ");
        System.out.println(arrondi(convertit, 2) + " °C.");
      }
     
      //On invite l'utilisateur à recommencer ou à quitter
      do{       
        System.out.println("Souhaitez-vous convertir une autre température ?(O/N)");
        reponse = sc.nextLine().charAt(0);
       
      }while(reponse != 'O' && reponse != 'N');
     
    }while(reponse == 'O');
    
  System.out.println("Au revoir !");
    
  //Fin de programme
  }
    
  public static double arrondi(double A, int B) {
    return (double) ( (int) (A * Math.pow(10, B) + .5)) / Math.pow(10, B);
  } 
}



  • Partager sur Facebook
  • Partager sur Twitter
6 septembre 2020 à 2:32:47

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter