import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; /** Ein Programm, das den Stack testet. */ public class StackTest { /** Gibt eine Nachricht am Bildschirm aus und * liest dann eine Zeichenreihe ein, die der Benutzer ueber * die Tastatur eingibt. Die eingelesene Zeichenreihe wird * als Ergebnis der Funktion ausgegeben. */ public static String readString(String msg) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println(msg); try { return br.readLine(); } catch(IOException e) { return ""; } } /** Gibt eine Nachricht am Bildschirm aus und liest * dann ein Zeichen von der Tastatur ein. * Dieses Zeichen wird an den Aufrufer zurueckgegeben. */ public static char readChar(String msg) { InputStreamReader isr = new InputStreamReader(System.in); System.out.println(msg); try { return (char) isr.read(); } catch(IOException e) { return '\u0000'; } } /** Erlaubt dem Benutzer die Auswahl zwischen verschiedenen * Operationen auf den beiden Stacks. */ public static void main(String[] args) { Stack s1 = new Stack(); // Hier werden zwei Instanzen von Stack gebildet. Stack s2 = new Stack(); char c; do { c = readChar("Waehlen Sie '1', '2', '3' oder '4'."); switch (c) { case '1' : s1.clear(); // Beide Stacks werden geleert. s2.clear(); break; case '2' : String contents = readString("Bitte einen Namen eingeben:"); s1.push(contents); // Es wird ein neues Element in den Stack s1 break; // eingefuegt case '3' : do // Alle Elemente von s1 nach s2 kopieren und { contents = s1.pop(); // dabei am Bildschirm ausgeben. if (contents != null) { s2.push(contents); System.out.println("s1 -> s2: " + contents); } } while (contents != null); break; case '4' : do // Alle Elemente von s2 nach s1 kopieren und { contents = s2.pop(); // dabei am Bildschirm ausgeben. if (contents != null) { s1.push(contents); System.out.println("s2 -> s1: " + contents); } } while (contents != null); break; } } while ( c == '1' || c == '2' || c == '3' || c == '4'); } }