【java】ターミナル画面で操作する(CLI)

CLI(Command Line Interface)とは?

ターミナル画面で文字を入力して操作するインターフェースのこと

  • マウスなしで、キーボード操作のみ
  • メニューやボタンはない

Java では学習初期に CLI が最適な理由

  • 入力と出力がシンプル
  • デバッグしやすい
  • クラス設計の理解が進む
  • GUI や Web に比べて準備が少ない

今作っている Todoアプリは CLIアプリ


Scanner 入力を読み取る準備をする

import java.util.Scanner;

java.utilとはJava 標準ライブラリの中の ユーティリティ(便利ツール)を集めたパッケージ

  • java → Java 標準のトップ階層
  • util → utility(ユーティリティ)の略
    「便利な小物ツールが入ってますよ」というフォルダ

その中に Scanner クラス(入力を読み取るためのツール)が入っている

Scanner」とはコンソール(キーボード入力)を読み取るためのクラス

「S」が大文字 → クラス名だから大文字で始まる

// 例
Scanner scanner = new Scanner(System.in);

// これは「Scanner という型の変数 scanner を作る」処理

CLIで使われる文法

while ループを繰り返す

例:while (ture) { … } → 条件がtureの間ずっと繰り返すループ文

true は固定の真偽値(boolean)なので、「永遠に繰り返すループ」という意味になる

  1. 条件を確認 → true → { } の中を実行
  2. もう一度 条件確認 → true
  3. また実行
  4. …永久に繰り返し

CLIアプリ→ユーザーの入力をずっと受け付け続けたい → 無限ループが◎


input コマンド入力を受け取る

String input = scanner.nextLine();

input ← (ユーザーが打った文字列)

CLIアプリではコマンド入力(add, delete, exit など)を受け取るための基本

  • String input
    → 「input という名前の String 型変数を作る」
  • =
    → 代入(右側の値を左に入れる)
  • scanner.nextLine()
    → Scanner オブジェクトに「1 行読み取って返して」と命令している
  1. ユーザーがキーボードで入力
  2. Enter を押すとその1行が Scanner に渡る
  3. nextLine() がそれを String として返す
  4. 変数 input に入る

ユーザーが入力した1行を文字列として受け取り、変数 input に保存する


switch 分岐する

与えられた値に応じて分岐する構文

switch (input) {

  • input の中身によって、次のように動く
    • case “add”: → add の処理へ
    • case “list”: → list の処理へ
    • case “exit”: → exit の処理へ
    • default: → 上のどれにも当てはまらない時

部分意味
import他のパッケージのクラスを使う宣言
java標準ライブラリのトップ階層
utilutility(便利ツール)パッケージ
Scanner入力を読み取るクラス(クラス名なので大文字)
while (true)永遠に繰り返すループ(アプリを動かし続ける)
String input = scanner.nextLine();ユーザーの入力を1行読み取って変数に保存
switch (input)入力内容に応じて処理を振り分ける