Calculatrice Java (en cmd) avec DOM
	
	
		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 :
	Code:
	
| 12
 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> | 
 Avec: java Calculatrice 2 - 1
	Code:
	
| 12
 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> | 
 Mon code JAVA :
	Code:
	
| 12
 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);
}
} | 
 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:
	
| 12
 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