前回はインターフェースと抽象クラスを使ったクラス設計を学びました。 今回は、これまで学んできた内容を総動員して、シンプルなToDoリスト管理アプリを作ります。 Scanner・ArrayList・クラス・switch文・例外処理をすべて組み合わせた、実際に使えるプログラムです。
今回作るもの
今回作るToDoリスト管理アプリは、以下の機能を持ちます。
- タスクの追加
- タスクの一覧表示
- タスクの削除
- アプリの終了
起動するとメニューが表示され、番号を入力することで各機能を呼び出せます。終了を選ぶまで何度でも操作できる対話型のプログラムです。
サンプルコード(ToDoリスト管理アプリ)
ファイル作成
「Java04」フォルダに Todo.java、TodoApp.java という名前でファイルを作成します

コード入力
Todo.java に以下のコードを入力します。
public class Todo {
String title;
Todo(String title) {
this.title = title;
}
}

TodoApp.java に以下のコードを入力します。
import java.util.ArrayList;
import java.util.Scanner;
public class TodoApp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Todo> todoList = new ArrayList<>();
String choice = "";
while (!choice.equals("4")) {
System.out.println("\n--- ToDoリスト ---");
System.out.println("1. タスクを追加");
System.out.println("2. タスクを表示");
System.out.println("3. タスクを削除");
System.out.println("4. 終了");
System.out.print("番号を入力してください:");
choice = sc.next();
switch (choice) {
case "1":
System.out.print("タスク名を入力してください:");
String title = sc.next();
todoList.add(new Todo(title));
System.out.println("「" + title + "」を追加しました");
break;
case "2":
if (todoList.size() == 0) {
System.out.println("タスクはありません");
} else {
System.out.println("--- タスク一覧 ---");
for (int i = 0; i < todoList.size(); i++) {
System.out.println((i + 1) + ". " + todoList.get(i).title);
}
}
break;
case "3":
if (todoList.size() == 0) {
System.out.println("削除するタスクがありません");
} else {
System.out.println("--- タスク一覧 ---");
for (int i = 0; i < todoList.size(); i++) {
System.out.println((i + 1) + ". " + todoList.get(i).title);
}
System.out.print("削除するタスクの番号を入力してください:");
try {
int index = Integer.parseInt(sc.next()) - 1;
if (index >= 0 && index < todoList.size()) {
System.out.println("「" + todoList.get(index).title + "」を削除しました");
todoList.remove(index);
} else {
System.out.println("エラー:正しい番号を入力してください");
}
} catch (NumberFormatException e) {
System.out.println("エラー:数字を入力してください");
}
}
break;
case "4":
System.out.println("アプリを終了します");
break;
default:
System.out.println("エラー:1〜4の番号を入力してください");
}
}
sc.close();
}
}

コンパイル
javac Todo.java TodoApp.java

実行
java TodoApp
次のようにメニューが表示されます。
--- ToDoリスト ---
1. タスクを追加
2. タスクを表示
3. タスクを削除
4. 終了
番号を入力してください:

操作例とその実行結果は次のようになります。
番号を入力してください:1
タスク名を入力してください:買い物
「買い物」を追加しました
番号を入力してください:1
タスク名を入力してください:勉強
「勉強」を追加しました
番号を入力してください:2
--- タスク一覧 ---
1. 買い物
2. 勉強
番号を入力してください:3
--- タスク一覧 ---
1. 買い物
2. 勉強
削除するタスクの番号を入力してください:1
「買い物」を削除しました
番号を入力してください:4
アプリを終了します
コードの解説
Todo.java は、タスクひとつひとつを表すクラスです。title フィールドにタスク名を持ち、Todo(String title) というコンストラクタで初期化しています。コンストラクタとは、new でインスタンスを作る際に自動的に呼ばれる特別なメソッドで、クラス名と同じ名前で定義します。this.title = title; の this は「このインスタンス自身」を指し、引数の title と区別するために使っています。
TodoApp.java では、ArrayList<Todo> でタスクの一覧を管理しています。while (!choice.equals("4")) により、「4(終了)」が入力されるまでメニューを繰り返し表示し続けます。文字列同士の比較には == ではなく .equals() を使う点がポイントです。
switch文でメニュー番号ごとの処理を分岐させています。タスク削除の処理では、入力された番号を Integer.parseInt() で整数に変換し、リストの範囲内かどうかを if 文でチェックしています。また、数字以外が入力された場合に備えて try-catch で NumberFormatException をキャッチしており、不正な入力があってもプログラムが落ちないようにしています。
このプログラムで使っている要素を振り返ると、Scannerでの入力受け取り・ArrayListでのデータ管理・クラスとコンストラクタ・while文・switch文・try-catchと、これまで学んできたほぼすべての内容が詰まっています。
まとめ
今回のToDoリスト管理アプリは、これまで学んだ要素を組み合わせた実践的なプログラムです。個々の文法をひとつずつ学んでいた段階から、複数の要素を組み合わせて「ひとつのアプリ」として動かす段階へとステップアップできました。今回初めて登場した「コンストラクタ」と「Integer.parseInt()」、そして文字列比較に == ではなく .equals() を使う点も重要なポイントです。ここまで学んだ内容があれば、アイデア次第でさまざまなプログラムを作ることができます。ぜひ機能を追加したり、別のアプリを自分で考えて作ってみてください。
2026/06/23(火) ぱんまる


コメント