/* Anwendungsprogramm fuer die Zahlsysteme * aus Uebungsblatt Nr. 5 - AI 2 - SS 2007 * * nh - 05/2007 */ import java.util.Arrays; public class FunWithNumberSystems { private static void printArray(NumberSystem[] myNumbers) { for (int i=0; i < myNumbers.length; i++) { System.out.println("myNumbers[" + i + "] = " + myNumbers[i] + " (entspricht Dezimal: " + myNumbers[i].convertToDecimal() + ")"); } } public static void main(String[] args) { /* Funktionalitaet 1: * Erzeugen von Zahlen im jeweiligen Zahlsystem und Umrechnen * von einem ins andere; * die hier beispielhaft fuer jeweils ein Zahlensystem gezeigten * Konvertierungen sollen auch in allen anderen Zahlensystem * funktionieren! */ // Hexadezimal "FF" -> Dezimal und zurueck HexSystemNumber h1 = new HexSystemNumber("FF"); System.out.println("Die Hexadezimalzahl <" + h1.toString() + "> lautet Dezimal: " + h1.convertToDecimal()); System.out.println("Die Dezimalzahl 280 lautet Hexadezimal: " + HexSystemNumber.convertFromInt(280)); // Oktalzahl "246" -> Dezimal OctalSystemNumber o1 = new OctalSystemNumber("246"); System.out.println("Die Oktalzahl <" + o1.toString() + "> lautet Dezimal: " + o1.convertToDecimal()); // Dualzahl aus Dezimalzahl erzeugen DualSystemNumber d1 = new DualSystemNumber(50); System.out.println("Die Dezimalzahl <" + d1.convertToDecimal() + "> lautet im Dualsystem: " + d1.toString()); // Anlegen einer Hexadezimalzahl aus einer Oktalzahl heraus HexSystemNumber h2 = new HexSystemNumber(o1); System.out.println("h2 als String: " + h2.toString()); System.out.println("h2 als Dezimalzahl: " + h2.convertToDecimal()); // Anlegen einer Oktalzahl aus einer Dualzahl heraus System.out.println("Lege 010101 als Dualzahl an!"); DualSystemNumber d2 = new DualSystemNumber("010101"); System.out.println(d2 + " als Dezimalzahl: " + d2.convertToDecimal()); OctalSystemNumber o2 = new OctalSystemNumber(d1); System.out.println("d1 konvertiert in Oktalzahl: " + o2); /* Funkionalitaet 2: * Sortieren von Zahlen unterschiedlicher Systeme so, dass sie * in der aus dem Dezimalsystem gewohnten Ordnung sortiert sind */ NumberSystem[] myNumbers = new NumberSystem[6]; myNumbers[0] = d1; // Dezimal: 50 myNumbers[1] = d2; // Dezimal: 21 myNumbers[2] = o1; // Dezimal: 166 myNumbers[3] = o2; // Dezimal: 21 myNumbers[4] = h1; // Dezimal: 255 myNumbers[5] = h2; // Dezimal: 166 System.out.println("Das Array einmal unsortiert: "); printArray(myNumbers); System.out.println(); Arrays.sort(myNumbers); // Sortierung durchfuehren System.out.println("Und nun das sortierte Array: "); printArray(myNumbers); } }