1   /**
2    * Esimerkki dynaamisesta taulukosta
3    * @author Vesa Lappalainen
4    * @version 1.0, 02.03.2002
5    */
6   
7   public class Taulukko {
8     public class TaulukkoTaysiException extends Exception {
9       TaulukkoTaysiException(String viesti) { super(viesti); }
10    }
11  
12    private int alkiot[];
13    private int lkm;
14  
15    public Taulukko() {
16      alkiot = new int[10];
17    }
18  
19    public Taulukko(int koko) {
20      alkiot = new int[koko];
21    }
22  
23    public void lisaa(int i) throws TaulukkoTaysiException {
24      if ( lkm >= alkiot.length ) throw new TaulukkoTaysiException("Tila loppu");
25      alkiot[lkm++] = i;
26    }
27  
28    public String toString() {
29      StringBuffer s = new StringBuffer("");
30      for (int i=0; i<lkm; i++)
31        s.append(" " + alkiot[i]);
32      return s.toString();
33    }
34  
35    public void set(int i, int luku) throws IndexOutOfBoundsException {
36      if ( ( i < 0 ) || ( lkm <= i ) ) throw new IndexOutOfBoundsException("i = " + i);
37      alkiot[i] = luku;
38    }
39  
40    public int get(int i) throws IndexOutOfBoundsException {
41      if ( ( i < 0 ) || ( lkm <= i ) ) throw new IndexOutOfBoundsException("i = " + i);
42      return alkiot[i];
43    }
44  
45    public static void main(String[] args) {
46      Taulukko luvut = new Taulukko();
47      try {
48        luvut.lisaa(0); luvut.lisaa(2);
49        luvut.lisaa(99);
50      } catch ( TaulukkoTaysiException e ) {
51        System.out.println("Virhe: " + e.getMessage());
52      }
53      System.out.println(luvut);
54      luvut.set(1,4);
55      System.out.println(luvut);
56      int luku = luvut.get(2);
57      System.out.println("Paikassa 2 on " + luku);
58      try {
59        luvut.set(21, 4);
60      }
61      catch (IndexOutOfBoundsException e) {
62        System.out.println("Virhe: " + e.getMessage());
63      }
64    }
65  }
66