class LiczbaException extends Exception { LiczbaException(String msg) { super(msg); }}public class Liczba { private int n=0; private char[] znaki = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; private char val2sign(int val) throws LiczbaException { //sprawdzamy czy wartosc val jest w naszym zasiegu if (!(val<znaki.length && val>=0)) { throw new LiczbaException("Proba pobrania znaku spoza zakresu!"); } return znaki[val]; } private int sign2val(char znak) { for(int i=0;i<znaki.length;i++) { if (znaki[i] == znak) { return i; } } //zwracamy kod bledu return -1; } public Liczba() { } public Liczba(int n) { this.n = n; } public Liczba(String n, int podstawa) throws LiczbaException { int t; if (podstawa<2 || podstawa > (10+znaki.length)) { throw new LiczbaException(podstawa+" nie jest obslugiwana podstawa systemu liczbowego."); } System.out.print(n); for(int i=0; i<n.length(); i++) { t = sign2val(n.charAt(i)); if (t<podstawa && t!=-1) { this.n = this.n*podstawa + t; } else { throw new LiczbaException(n+" nie jest poprawna liczba w systemie o podstawie "+podstawa); } } } public String zapis(int podstawa) throws LiczbaException { if (podstawa<=1) { throw new LiczbaException("Liczba "+podstawa+" nie jest prawidlowa podstawa systemu liczbowego."); } else if (podstawa == 10) return String.valueOf(n); String temp, liczba=""; int n = this.n; int r; while(n>0) { r = n % podstawa; try { temp = Character.toString(val2sign(r)); } catch (LiczbaException ex) { throw new LiczbaException("Brak danych na temat znakow wystepujacych w systemie o podstawie "+podstawa+"."); } liczba = temp.concat(liczba); n=n/podstawa; } return liczba; }}