001 /** 002 * Esimerkki dynaamisesta taulukosta 003 * @author Vesa Lappalainen 004 * @version 1.0, 02.03.2002 005 */ 006 007 public class Taulukko { 008 public class TaulukkoTaysiException extends Exception { 009 TaulukkoTaysiException(String viesti) { super(viesti); } 010 } 011 012 private int alkiot[]; 013 private int lkm; 014 015 public Taulukko() { 016 alkiot = new int[10]; 017 } 018 019 public Taulukko(int koko) { 020 alkiot = new int[koko]; 021 } 022 023 public void lisaa(int i) throws TaulukkoTaysiException { 024 if ( lkm >= alkiot.length ) throw new TaulukkoTaysiException("Tila loppu"); 025 alkiot[lkm++] = i; 026 } 027 028 public String toString() { 029 StringBuffer s = new StringBuffer(""); 030 for (int i=0; i<lkm; i++) 031 s.append(" " + alkiot[i]); 032 return s.toString(); 033 } 034 035 public void set(int i, int luku) throws IndexOutOfBoundsException { 036 if ( ( i < 0 ) || ( lkm <= i ) ) throw new IndexOutOfBoundsException("i = " + i); 037 alkiot[i] = luku; 038 } 039 040 public int get(int i) throws IndexOutOfBoundsException { 041 if ( ( i < 0 ) || ( lkm <= i ) ) throw new IndexOutOfBoundsException("i = " + i); 042 return alkiot[i]; 043 } 044 045 public static void main(String[] args) { 046 Taulukko luvut = new Taulukko(); 047 try { 048 luvut.lisaa(0); luvut.lisaa(2); 049 luvut.lisaa(99); 050 } catch ( TaulukkoTaysiException e ) { 051 System.out.println("Virhe: " + e.getMessage()); 052 } 053 System.out.println(luvut); 054 luvut.set(1,4); 055 System.out.println(luvut); 056 int luku = luvut.get(2); 057 System.out.println("Paikassa 2 on " + luku); 058 try { 059 luvut.set(21, 4); 060 } 061 catch (IndexOutOfBoundsException e) { 062 System.out.println("Virhe: " + e.getMessage()); 063 } 064 } 065 }