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