Javaアプリケーション – タイマー①要件とコード

Javaで作るおみくじアプリのサムネ画像です。 プログラミング

みなさんこんにちは、一星零哉です。

今回作成、解説していくのはJavaで実装する「タイマー」アプリです。

コンソールに入力された時間分だけ計測するカウントダウンタイマーになります。

さっそく作っていきましょう!

要件と設計

このアプリケーションの要件は「標準入力に入力された時間分、カウントダウンで時間を計測し、残り時間を標準出力する」ことです。

ざっくりと処理の流れを見ていきましょう。

  1. アプリ実行
  2. 計測したい時間を入力する旨のメッセージを表示する
  3. ユーザが入力する
  4. 入力値をチェックして、数字以外が入力されていたらメッセージを標準出力して処理を終了する
  5. 入力値をカウンタ変数の初期値として減算ループを回す。
    • カウンタ変数を残り時間として標準出力する
    • 処理を1秒間止める
    • カウンタ変数から1を引く
  6. カウンタ変数が0になったらループを抜ける
  7. タイマーが終了した旨のメッセージを標準出力する
  8. アプリ終了

以上です!

簡単に図にするとこんな感じです。

実装

まずは以下のように実装してみました。

ちなみにJavaのバージョンはJavaSE-21です。

import java.util.Scanner;

public class exeTimer {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner scanner = new Scanner(System.in);
		String tmpSetTime;
		try {
			System.out.println("時間を秒単位で設定してください。");
			tmpSetTime = scanner.nextLine();
			
			// 数字以外が入力された場合、処理を終了する
			for(int i = 0; i < tmpSetTime.length(); i++) {
				if(!Character.isDigit(tmpSetTime.charAt(i))) {
					System.out.println("数字を入力してください。");
					return;
				}
			}
		} finally {
			scanner.close();
		}
		
		try {
			int setTime = Integer.parseInt(tmpSetTime);
			String srtMsg = "%s秒でタイマーを開始します。";
			System.out.println(String.format(srtMsg, setTime));
			
			for(int i = setTime; i > 0; i--) {
				System.out.println(String.format("%s秒", i));
				
				Thread.sleep(1000);
			}
			
			System.out.println("0秒");
			System.out.println("タイマーが終了しました。");
		} catch(InterruptedException e) {
			System.out.println("スレッドスリープでエラーが発生しました。");
		}
		
	}

}

今回も50ステップ程度のクラス1つのアプリケーションになりました。

GitHubはこちらから

実行

このアプリケーションを実行したときの挙動を確認しましょう。

アプリケーションを実行すると、以下のメッセージが標準出力されます。

計測したい時間を入力してEnterを押下すると。。。

カウントダウンが表示されます!キャプチャだけでは伝わらないですが、「秒」と「秒」の出力には1秒間の間隔があります。

数字以外を入力したら、アラートのメッセージが表示されて処理が終了します。

次回

次回からはこのプログラムの解説をしていきます。

ここまでお読みいただきありがとうございました!

この記事を閉じる前に、XInstagramのフォローもよろしくお願いします!

また次の記事でお会いしましょう!

コメント