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:
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> |
Avec: java Calculatrice 2 - 1
Code:
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> |
Mon code JAVA :
Code:
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);
}
} |
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:
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