List 4-6で利用しているメソッドはsize , capacity , push , pop , peek , dump のみである。すべてのメソッドを利用するプログラムを作成せよ。 |
// 演習4-1 // int型スタックの利用例(IntStackクラスの全メソッドを利用) import java.util.Scanner; class IntStackTesterEx { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); IntStack s = new IntStack(10); // 最大10個プッシュできるスタック while (true) { int menu, x = 0; System.out.println("現在のデータ数:" + s.size() + " / " + s.capacity()); System.out.print("(1)プッシュ (2)ポップ (3)ピーク " + "(4)ダンプ (5)探索 (6)空にする " + "(7)情報表示 (0)終了:"); if ((menu = stdIn.nextInt()) == 0) break; switch (menu) { case 1: // プッシュ System.out.print("データ:"); x = stdIn.nextInt(); try { s.push(x); } catch (IntStack.OverflowIntStackException e) { System.out.println("スタックが満杯です。"); } break; case 2: // ポップ try { x = s.pop(); System.out.println("ポップしたデータは" + x + "です。"); } catch (IntStack.EmptyIntStackException e) { System.out.println("スタックが空です。"); } break; case 3: // ピーク try { x = s.peek(); System.out.println("ピークしたデータは" + x + "です。"); } catch (IntStack.EmptyIntStackException e) { System.out.println("スタックが空です。"); } break; case 4: // ダンプ s.dump(); break; case 5: // 探索 System.out.print("探索するデータ:"); x = stdIn.nextInt(); int n = s.indexOf(x); if (n >= 0) System.out.println("頂上から" + (s.size() - n) +"番目に存在します。"); else System.out.println("そのデータはありません。"); break; case 6: // 空にする s.clear(); break; case 7: // 情報表示 System.out.println("容量:" + s.capacity()); System.out.println("データ数:" + s.size()); System.out.println("空" + (s.isEmpty() ? "です。" : "ではありません。")); System.out.println("満杯" + (s.isFull() ? "です。" : "ではありません。")); break; } } } }