“faire une classe avec quatre fils de type objet, un constructeur qui affecte des valeur random() à des objets Double qui deviennent ces fils [avec des System.out.println des valeurs qu'il affecte], une méthode de lecture des valeurs des fils. Et une procédure test qui invoque cette classe et demande les valeurs pour vérifier que ça c'est bien passé. ”
import java.math.*;
import java.io.*;
public class QuadAleas {
Object NW, NE, SE,SW;
int niveau=1;
double x;
QuadAleas(){
x=Math.random();
System.out.println("NW="+x);
NW = new Double(x);
x=Math.random();
System.out.println("NE="+x);
NE = new Double(x);
x=Math.random();
System.out.println("SE="+x);
SE = new Double(x);
x=Math.random();
System.out.println("SW="+x);
SW = new Double(x);
}
}
Programme qui teste:
import java.io.*;
public class TestQuadAleas
{
public static void main(String args[]){
QuadAleas q;
double x;
Double d;
double dv;
System.out.println("debut");
q=new QuadAleas();
System.out.println("q peut exister");
System.out.println("que vaut q.NE?");
System.out.println(((Double) q.NE).doubleValue());
System.out.println("que vaut q.NW?");
dv=((Double) q.NW).doubleValue();
System.out.println(dv);
System.out.println("que vaut q.SW?");
System.out.println(((Double) q.SW).doubleValue());
System.out.println("que vaut q.SE?");
System.out.println(((Double) q.SE).doubleValue());
d = (Double) q.NW;
}
}
Résultat au console :
debut NW=0.6100332155732191 NE=0.24218663748775782 SE=0.011311275927148201 SW=0.9628320177972618 q peut exister que vaut q.NE? 0.24218663748775782 que vaut q.NW? 0.6100332155732191 que vaut q.SW? 0.9628320177972618 que vaut q.SE? 0.011311275927148201
Deuxième fois (aléas différents?)
debut NW=0.8002215519190667 NE=0.8639876457672263 SE=0.6765963324510199 SW=0.23393572355401193 q peut exister que vaut q.NE? 0.8639876457672263 que vaut q.NW? 0.8002215519190667 que vaut q.SW? 0.23393572355401193 que vaut q.SE? 0.6765963324510199
Enseignements tirés de cette expérience:
1. Puisque les quartiers sont déclarés Object le cast (Double) dans
dv=((Double) q.NW).doubleValue(); et System.out.println(((Double) q.SE).doubleValue());
est indispensable pour avoir accès à la méthode .doubleValue().
2. Il n'a pas été nécessaire de rajouter une méthode lisValeur, la méthode fournie par Double a suffit.
La suite est dans QuadDble.