Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1871 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Switch et Case

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Switch et Case

n°516180
neosparky
Citoyen du Monde
Posté le 16-09-2003 à 23:49:16  profilanswer
 

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.
mood
Publicité
Posté le 16-09-2003 à 23:49:16  profilanswer
 

n°516184
benou
Posté le 16-09-2003 à 23:55:58  profilanswer
 

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
n°516194
ozark74
Posté le 17-09-2003 à 00:29:51  profilanswer
 

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


 
ou bien
 

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

n°516325
Krueger
tout salaire demande dutravail
Posté le 17-09-2003 à 10:13:49  profilanswer
 

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
n°516351
ozark74
Posté le 17-09-2003 à 10:44:23  profilanswer
 

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)

n°516423
BifaceMcLe​OD
The HighGlandeur
Posté le 17-09-2003 à 12:03:00  profilanswer
 

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
n°516758
neosparky
Citoyen du Monde
Posté le 17-09-2003 à 21:28:16  profilanswer
 

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


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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Switch et Case

 

Sujets relatifs
une case <td> qui est un liencomment faire un Switch/Case en delphi ?!
[STL] class string et comparaison non case-sensitiveComment peux t-on virer une case d'un tableau sur sa/ses valeurs ?
Ptite question sur la fonction switch :)"cocher" une case à cocher
le switch case peut t'il contenir plusieurs valeures??Switch... Case... Default
[PHP]Quest. sur l'utilisation de "switch case break" pour des includescomment faire un switch ou case of en VB ??? C'est méga urgent !
Plus de sujets relatifs à : Switch et Case


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR