Bonjour,
Je cherche à créer une calculatrice élémentaire en JAVA qui réagisse en ligne de commande (pour introduire les paramètres) et qui utilise l'API DOM.
Ainsi, avec :
java Calculatrice 1.5 "<" 2
on aurait :
Avec: java Calculatrice 2 - 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="ISO-8859-1"?> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mn>1.5</mn> <mo><</mo> <mn>2</mn> <mo>=</mo> <mrow><mtext>vrai</mtext></mrow> </mrow> </math>
Mon code JAVA :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="ISO-8859-1"?> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mn>2</mn> <mo>-</mo> <mn>1</mn> <mo>=</mo> <mn>1.0</mn> </mrow> </math>
J’obtiens beaucoup d’erreurs qui sont systématiques. Mais de façon générale, je ne comprends pas bien comment gérer les paramètres entrant pour les inclure dans un arbre DOM :
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91 import org.w3c.dom.*; import javax.xml.parsers.*; import java.io.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import java.util.*; public class Calculatrice { public static void main(String[] args) throws Exception { String uri="http://www.w3.org/1998/Math/MathML"; //Paramètres en ligne de commande //Premier nombre String mn1= new String (args[1]); //Opérateur String m0= new String (args[2]); //Deuxième nombre String mn2= new String (args[3]); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = factory.newDocumentBuilder(); Document doc = parser.newDocument(); //Création du modèle DOM //1) Racine Element mrow = doc.createElementNS("http://www.w3.org/1998/Math/MathML", "mrow"); doc.appendChild(mrow); //2) Premier nombre Element mn = doc.createElement ("http://www.w3.org/1998/Math/MathML", "mn"); mn.appendChild(doc.createTextNode(args[1])); //3) Opérateurs Element mo = doc.createElement ("http://www.w3.org/1998/Math/MathML", "mo"); mo.appendChild(doc.createTextNode(args[2])); //mo.appendChild(doc.createTextNode("+")); //mo.appendChild(doc.createTextNode("-")); //mo.appendChild(doc.createTextNode("<")); //mo.appendChild(doc.createTextNode(">")); //3) Deuxième nombre Element mn = doc.createElement ("http://www.w3.org/1998/Math/MathML", "mn"); mn.appendChild(doc.createTextNode(args[3])); //4) Egalité Element mo = doc.createElement ("http://www.w3.org/1998/Math/MathML", "mo"); mo.appendChild(doc.createTextNode("=")); //5) Result : QUELLE FONCTION? UNE FONCTION OU A DIVISER SELON DES CAS DIFFERENTS? Element mn = doc.createElement ("http://www.w3.org/1998/Math/MathML", "mn"); //FONCTION UNIQUE //mn.appendChild(doc.createTextNode(FONCTION(args[1], args[2], args[3]))); //4 CAS D'OPERATIONS: switch (args[2]) { //Addition case '+': Element mn = doc.createElement ("http://www.w3.org/1998/Math/MathML", "mn"); mn.appendChild(doc.createTextNode(int(args[1])+int(args[3]))); //Soustraction case '-': Element mn = doc.createElement ("http://www.w3.org/1998/Math/MathML", "mn"); mn.appendChild(doc.createTextNode(int(args[1])-int(args[3]))); //Comparaisons case '"<"': if(int(args[1])<int(args[3])) //Result=="vrai"; {Element mtext = doc.createElement ("mtext"); mtext.appendChild(doc.createTextNode("vrai"));} else //Result=="faux"; {Element mtext = doc.createElement ("mtext"); mtext.appendChild(doc.createTextNode("faux"));} case '">"': if(int(args[1])>int(args[3])) //Result=="vrai"; {Element mtext = doc.createElement ("mtext"); mtext.appendChild(doc.createTextNode("vrai"));} else //Result=="faux"; {Element mtext = doc.createElement ("mtext"); mtext.appendChild(doc.createTextNode("faux"));} } // Affichage du document en ligne de commande TransformerFactory tfact = TransformerFactory.newInstance(); Transformer transformer = tfact.newTransformer(); DOMSource source = new DOMSource(doc); FileWriter fw = new FileWriter(doc); StreamResult result = new StreamResult(System.out); transformer.transform(source, result); } }
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148 Calculatrice.java:58: error: '.class' expected mn.appendChild(doc.createTextNode(int(args[1])+int(args[3]))); ^ Calculatrice.java:58: error: ')' expected mn.appendChild(doc.createTextNode(int(args[1])+int(args[3]))); ^ Calculatrice.java:58: error: not a statement mn.appendChild(doc.createTextNode(int(args[1])+int(args[3]))); ^ Calculatrice.java:58: error: ';' expected mn.appendChild(doc.createTextNode(int(args[1])+int(args[3]))); ^ Calculatrice.java:58: error: not a statement mn.appendChild(doc.createTextNode(int(args[1])+int(args[3]))); ^ Calculatrice.java:58: error: ';' expected mn.appendChild(doc.createTextNode(int(args[1])+int(args[3]))); ^ Calculatrice.java:58: error: not a statement mn.appendChild(doc.createTextNode(int(args[1])+int(args[3]))); ^ Calculatrice.java:58: error: ';' expected mn.appendChild(doc.createTextNode(int(args[1])+int(args[3]))); ^ Calculatrice.java:63: error: '.class' expected mn.appendChild(doc.createTextNode(int(args[1])-int(args[3]))); ^ Calculatrice.java:63: error: ')' expected mn.appendChild(doc.createTextNode(int(args[1])-int(args[3]))); ^ Calculatrice.java:63: error: not a statement mn.appendChild(doc.createTextNode(int(args[1])-int(args[3]))); ^ Calculatrice.java:63: error: ';' expected mn.appendChild(doc.createTextNode(int(args[1])-int(args[3]))); ^ Calculatrice.java:63: error: not a statement mn.appendChild(doc.createTextNode(int(args[1])-int(args[3]))); ^ Calculatrice.java:63: error: ';' expected mn.appendChild(doc.createTextNode(int(args[1])-int(args[3]))); ^ Calculatrice.java:63: error: not a statement mn.appendChild(doc.createTextNode(int(args[1])-int(args[3]))); ^ Calculatrice.java:63: error: ';' expected mn.appendChild(doc.createTextNode(int(args[1])-int(args[3]))); ^ Calculatrice.java:66: error: unclosed character literal case '"<"': ^ Calculatrice.java:66: error: unclosed string literal case '"<"': ^ Calculatrice.java:67: error: illegal start of expression if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: ';' expected if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: not a statement if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: ';' expected if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: not a statement if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: ';' expected if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: > expected if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: ';' expected if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: illegal start of expression if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: ';' expected if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: illegal start of expression if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: ';' expected if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: illegal start of expression if(int(args[1])<int(args[3])) ^ Calculatrice.java:67: error: ';' expected if(int(args[1])<int(args[3])) ^ Calculatrice.java:71: error: 'else' without 'if' else //Result=="faux"; ^ Calculatrice.java:74: error: orphaned case case '">"': ^ Calculatrice.java:74: error: unclosed character literal case '">"': ^ Calculatrice.java:74: error: illegal start of expression case '">"': ^ Calculatrice.java:74: error: unclosed string literal case '">"': ^ Calculatrice.java:75: error: '.class' expected if(int(args[1])>int(args[3])) ^ Calculatrice.java:75: error: not a statement if(int(args[1])>int(args[3])) ^ Calculatrice.java:75: error: ';' expected if(int(args[1])>int(args[3])) ^ Calculatrice.java:75: error: not a statement if(int(args[1])>int(args[3])) ^ Calculatrice.java:75: error: ';' expected if(int(args[1])>int(args[3])) ^ Calculatrice.java:75: error: not a statement if(int(args[1])>int(args[3])) ^ Calculatrice.java:75: error: ';' expected if(int(args[1])>int(args[3])) ^ Calculatrice.java:79: error: 'else' without 'if' else //Result=="faux"; ^ Calculatrice.java:91: error: <identifier> expected transformer.transform(source, result); ^ Calculatrice.java:91: error: <identifier> expected transformer.transform(source, result); ^ Calculatrice.java:91: error: <identifier> expected transformer.transform(source, result); ^ Calculatrice.java:93: error: class, interface, or enum expected } ^ 49 errors
Merci pour vos lumières !
Radu
Partager