1   package kanta;
2   import fi.jyu.mit.ohj2.Mjonot;
3   
4   /**
5    * Kenttä reaalilukuja varten.
6    * @author vesal
7    * @version 31.3.3008
8    *
9    */
10  public class DoubleKentta extends PerusKentta {
11      private double arvo;
12  
13      /**
14       * Alustetaan kenttä kysymyksellä
15       * @param kysymys joka esitetään kentän kohdalla
16       */
17      public DoubleKentta(String kysymys) { super(kysymys,new DesimaaliTarkistaja()); }
18  
19      /**
20       * @return Kentän arvo reaalilukuna
21       */
22      public double getValue() { return arvo; }
23  
24      /**
25       * Asetetaan kentän arvo reaalilukuna
26       * @param value kentän uusi arvo reaalilukuna
27       */
28      public void setValue(double value) { arvo = value; }
29  
30      /**
31       * @return kentän arvo merkkijonona
32       * @see kanta.PerusKentta#toString()
33       */
34      @Override
35      public String toString() { return ""+arvo; }
36  
37  
38      /**
39       * @param jono jono jaoka asetetaan.  Vääristä jonoista
40       * arvoksi jää muuttumatta
41       * @see kanta.PerusKentta#aseta(java.lang.String)
42       * @example
43       * <pre name="test">
44       * DoubleKentta kentta = new DoubleKentta("summa");
45       * kentta.aseta("kissa") === "Ei desimaaliluku";  kentta.getValue() ~~~ 0.0; 
46       * kentta.aseta("12.7")  === null;  kentta.getValue() ~~~ 12.7; 
47       * kentta.aseta("32k7")  === "Ei desimaaliluku";  kentta.getValue() ~~~ 12.7; 
48       * </pre>
49       */
50      @Override
51      public String aseta(String jono) {
52          String virhe = null;
53          if ( tarkistaja != null ) virhe = tarkistaja.tarkista(jono);
54          if ( virhe != null ) return virhe;
55          this.arvo = Mjonot.erotaDouble(jono,0.0);
56          return null;
57      }
58  
59      /**
60       * Palauttaa kentän tiedot veratiltavana merkkijonona
61       * @return vertailtava merkkijono kentästä
62       * @example
63       * <pre name="test">
64       * DoubleKentta kentta = new DoubleKentta("määrä");
65       *                                         //  123456789012345678
66       * kentta.aseta("12");  kentta.getAvain() === "         12.000000";
67       * kentta.aseta("1");   kentta.getAvain() === "          1.000000";
68       * kentta.aseta("999"); kentta.getAvain() === "        999.000000";
69       *   
70       * </pre>
71       */
72      @Override
73      public String getAvain() { 
74          return Mjonot.fmt(arvo, 18,6); 
75      }
76  
77  }
78