Switch et Case

Switch et Case - Java - Programmation

Marsh Posté le 16-09-2003 à 23:49:16    

Bon voila, je suis encore un debutant en JAVA mais pendant ces trois semaines de cours je me suis ameliore. Quand je compile le code qui suis, ya pas de probleme. C'est juste quand je roule le programme et que j'entre une valeur que ca foire.
 

Code :
  1. import java.io.*;
  2. import java.text.*;
  3. public class switchAndCase
  4. {
  5.    static BufferedReader keyboard = new
  6.            BufferedReader(new InputStreamReader(System.in));
  7.    public static void main(String[] args) throws IOException
  8.    {
  9.       DecimalFormat twoDigits = new DecimalFormat("0.00" );
  10.       char tempType;
  11.       double cels;
  12.       double fahren;
  13.       System.out.print("Please enter a temperature type (C/F): " );
  14.       System.out.flush();
  15.       tempType = (keyboard.readLine()).charAt(0);
  16.       switch(tempType)
  17.       {
  18.          case 'c':
  19.          case 'C': System.out.print("Enter the temperature in Celsius: " );
  20.                    System.out.flush();
  21.                    cels = Double.parseDouble(keyboard.readLine());
  22.                    fahren = cels / (5 / 9) + (32);
  23.                    System.out.println("The temperature in Fahrenheit is: "
  24.                                        + twoDigits.format(fahren) + "degrees Fahrenheit." );
  25.                    break;
  26.          case 'f':
  27.          case 'F': System.out.print("Enter the temperature in Fahrenheit: " );
  28.                    System.out.flush();
  29.                    fahren = Double.parseDouble(keyboard.readLine());
  30.                    cels = (5 / 9) * (fahren - 32);
  31.                    System.out.println("The temperature in Celsius is: "
  32.                                        + twoDigits.format(cels) + " degrees Celsius." );
  33.                    break;
  34.          default: System.out.println("The value you entered does not correspond with"
  35.                                       + " the possible values." );
  36.       }
  37.    }
  38. }


 
Quelqu'un pourrait m'aider?
(On oublie les accents dans mon langage, suis sur un clavier anglais et pas envie de changer de langue)
 
Merci d'avance :jap:


---------------
Aime son JAVA bien chaud le matin.
Reply

Marsh Posté le 16-09-2003 à 23:49:16   

Reply

Marsh Posté le 16-09-2003 à 23:55:58    

neosparky a écrit :

C'est juste quand je roule le programme et que j'entre une valeur que ca foire.


tu pourrais être moins précis ? :/


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 17-09-2003 à 00:29:51    

Code :
  1. fahren = cels / (5.0 / 9.0) + (32);


 
ou bien
 

Code :
  1. fahren = cels / ((double)5 / (double)9) + (32);

Reply

Marsh Posté le 17-09-2003 à 10:13:49    

neosparky a écrit :

Bon voila, je suis encore un debutant en JAVA mais pendant ces trois semaines de cours je me suis ameliore. Quand je compile le code qui suis, ya pas de probleme. C'est juste quand je roule le programme et que j'entre une valeur que ca foire.
...


Ça foire comment ?


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 17-09-2003 à 10:44:23    

Krueger a écrit :


Ça foire comment ?


 
ben ca foire pas vraiment (y a pas d'exception lancée)
 
mais ce qui ne vai pas dans son code c'est qu'il divise cels par 5/9  
 
5/9 ca donne 0 : division d'entier
 
cels / (5/9) est donc égal à l'infini (pas bien)

Reply

Marsh Posté le 17-09-2003 à 12:03:00    

Et c'est normal : 5 est un entier, et 9 est un entier. Ce sont 5.0 et 9.0 qui sont des nombres à virgule. Dans un ordinateur, les entiers et les nombres flottants sont deux entités radicalement différentes. Pour être sûr que tu utilises bien le bon type de données, il vaut mieux systématiquement utiliser la notation la plus explicite (ici, utiliser le point décimal opur désigner un nombre à virgule flottante).
 
Change donc tes deux formules en :

Code :
  1. fahren = cels * 9.0 / 5.0 + 32.0;

et

Code :
  1. cels = 5.0 / 9.0 * (fahren - 32.0);

et ton problème devrait disparaître comme par enchantement.


Message édité par BifaceMcLeOD le 17-09-2003 à 12:05:23
Reply

Marsh Posté le 17-09-2003 à 21:28:16    

J'arrive pas à croire que j'ai pu oublier ca...
Merci tout le monde! :jap:


---------------
Aime son JAVA bien chaud le matin.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed