bonjour, mon exercice est :
Comportement attendu
Attention, il importe que votre programme respecte strictement les formats et comportements présentés ici.
Le programme accepte un nombre décimal suivi d'un retour chariot et affiche la représentation normalisée suivie d'un retour chariot. Si l'entrée ne contient pas un nombre décimal ou contient un nombre décimal mal formé, le programme doit afficher une ligne terminant par 'Erreur' suivi d'un retour chariot.
Exemples
entrée: 0
sortie: 0
entrée: 5
sortie: 0.5e1
entrée: 100
sortie: 0.1e3
entrée: 0.55
sortie: 0.55
entrée: 0.007
sortie: 0.7e-2
entrée: -10.00
sortie: -0.1e2
entrée: -01020.03040
sortie: -0.10200304e4
Fin exercice
NB/ La forme normalisée à utiliser dans ce TP est "0.XXXeYYY" qui peut être précédée du signe moins (-) où :
XXX (appelée mantisse) est une séquence de chiffres de 0 à 9 qui ne doit ni commencer ni se terminer par un 0.
YYY (appelé exposant) est une séquence de chiffres de 0 à 9 qui ne doit pas commencer par un 0 et qui peut être précédée du signe moins (-).
Si le nombre à représenter vaut 0, la forme normalisée est juste "0" (sans signe ni exposant).
Si l'exposant vaut zéro, la partie exposant (incluant le 'e') est omise (la forme normalisée est juste "0.XXX" éventuellement précédée du signe moins).
Le code que j'ai fait jusqu'à présent est (juste la lecture de l'entrée clavier et tester si un nombre ou pas, reste comment traduire ce nombre souos la forme demandée?):
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.ParseException; public class INF2170_TP1 { //final String s_TP_Name = "INF2170_TP1"; /**Cette fonction teste si la valeur donnée * en String est numérique ou pas * @param p_Number de type String */ static boolean is_number(String p_Number){ boolean b_Number = false; NumberFormat format = new DecimalFormat(); try { format.parse(p_Number).doubleValue(); b_Number = true; } catch (ParseException e) { b_Number = false; } return b_Number; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("INF2170_TP1"); System.out.println("Veuillez donner un nombre décimal: "); // pour récupérer les données user et les mettre en mémoire InputStreamReader s_val_in = new InputStreamReader(System.in); BufferedReader s_val_tampon = new BufferedReader(s_val_in); // pour récupérer les données de la mémoire String s_str = null; try { s_str = s_val_tampon.readLine(); if (!is_number(s_str)){ System.out.println("la valeur " + s_str + " n'est pas un nombre"); } else{ System.out.println("Vous avez donné: " + s_str); } } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }
Partager