Le but de cet exercice est de construire un évaluateur d'expressions arithmétiques simples. Ces expressions sont représentées sous forme d'arbre.
On veut un type commun fr.umlv.calc.Expr représentant des
expressions arithmétiques qui peuvent être soit une valeur
réelle (de type fr.umlv.calc.Value) soit une opération
d'addition (de type fr.umlv.calc.Add) qui permet d'effectuee
l'addition de deux expression.
On veut de plus être capable d'évaluer
de ces expressions en utilisant la méthode
eval().
Expr value=new Value(7.0); System.out.println(value.eval()); // affiche 7.0 Expr add=new Add(new Value(3.0),value); System.out.println(add.eval()); // affiche 10.0 Expr expr=new Add(new Value(2.0),add); System.out.println(expr.eval()); // affiche 12.0
On souhaite afficher l'animal préférée de bob, alice ou june.
Alice a pour animal préféré edith le singe.
Bob a pour animal préféré izard le chamoix.
June a pour animal préféré gold le poisson rouge.
java Animal bob L'animal préféré de bob est izard le chamoix
Expliquer ce que fait le code suivant :
import java.util.List; import java.util.ArrayList; import java.util.LinkedList; ... public static void main(String[] args) { List list; if (args.length==0) list=new ArrayList(); else list=new LinkedList(); for(String s:args) list.add(s); } ...
Le code précédent compile avec un warning, que doit-on faire
pour supprimer celui-ci ?
Ré-écrire le code du main en conséquence
De la même façon, transformer le code suivant :
public static void main(String[] args) { List list=new ArrayList(); Collections.addAll(list,args); for(int i=0;i<list.size();i++) { String s=(String)list.get(i); System.out.printf("%s:%d\n"s,s.length()); } }
Quel est l'intérêt des generics en Java ?