package luento15; /** * Esimerkki dynaamisesta taulukosta * @author Vesa Lappalainen * @version 1.0, 02.03.2002 * TODO: korjaa testit */ public class TaulukkoDouble { /** * Poikkeus joka heitetään kun taulukko on täysi */ public static class TaulukkoTaysiException extends Exception { /** */ private static final long serialVersionUID = 1L; /** * @param viesti joka tulee poikkeuksen mukana */ public TaulukkoTaysiException(String viesti) { super(viesti); } } private double alkiot[]; private int lkm = 0; /** * Luodaan taulukon vaatima tila */ public TaulukkoDouble() { alkiot = new double[10]; } /** * Luodaan taulukon vaatima tila * @param koko taulukon max-koko */ public TaulukkoDouble(int koko) { alkiot = new double[koko]; } /** * Lisätään luku jos mahtuu * @param luku lisättävä luku * @throws TaulukkoTaysiException jos ei mahu * @example *
* #THROWS TaulukkoDouble.TaulukkoTaysiException * TaulukkoDouble luvut = new TaulukkoDouble(3); * luvut.lisaa(3); * luvut.toString() === "3.0"; * luvut.lisaa(99); * luvut.toString() === "3.0 99.0"; * luvut.lisaa(77); * luvut.toString() === "3.0 99.0 77.0"; * luvut.lisaa(66); #THROWS TaulukkoDouble.TaulukkoTaysiException * luvut.toString() === "3.0 99.0 77.0"; **/ public void lisaa(double luku) throws TaulukkoTaysiException { /// TODO entä jos ei mahu if ( lkm >= alkiot.length ) throw new TaulukkoTaysiException("Ei mahu ennää "+luku); alkiot[lkm] = luku; lkm++; } /** * Palautta paikassa i olevan alkion * Jos indeksi laiton, palautetaan 0 * @param i paikka josta alkio otetaan * @return paikassa i oleva alkio * @example *
* #THROWS TaulukkoDouble.TaulukkoTaysiException * TaulukkoDouble luvut = new TaulukkoDouble(); * luvut.lisaa(3); * luvut.lisaa(99); * luvut.get(0) ~~~ 3; * luvut.get(1) ~~~ 99; * luvut.get(12) ~~~ 0; **/ public double get(int i) { if ( i < 0 || lkm <= i) return 0; return alkiot[i]; } /** * Asettaa paikkaan i alkion luku * Jos i laiton, ei tehdä mitään * @param i paikka johon laitetaan * @param luku luku joka laitetan taulukkoon * @example *
* #THROWS TaulukkoDouble.TaulukkoTaysiException * TaulukkoDouble luvut = new TaulukkoDouble(); * luvut.set(4,3); * luvut.toString() === ""; * luvut.lisaa(3); * luvut.lisaa(99); * luvut.lisaa(66); * luvut.set(1,5); * luvut.toString() === "3.0 5.0 66.0"; * luvut.set(0,1); * luvut.toString() === "1.0 5.0 66.0"; * luvut.set(2,10); * luvut.toString() === "1.0 5.0 10.0"; **/ public void set(int i, double luku) { //TODO rajat??? if ( i < 0 || lkm <= i) return; alkiot[i] = luku; } /** * Palauttaa taulukon merkkijonona * @return taulukko muodossa "0 2 99" * @example *
* #THROWS TaulukkoDouble.TaulukkoTaysiException * TaulukkoDouble luvut = new TaulukkoDouble(); * luvut.lisaa(3); luvut.lisaa(99); luvut.lisaa(4); * luvut.toString() === "3.0 99.0 4.0"; **/ @Override public String toString() { StringBuilder s = new StringBuilder(); String tyhja = ""; for (int i=0; i