From 1d01b31f4f66dbf60233568b66a85324dc2cdae6 Mon Sep 17 00:00:00 2001 From: "h.hein" <26-h-kyaw-sakuracommunication@it-college.co.jp> Date: Thu, 10 Sep 2026 15:01:04 +0900 Subject: [PATCH] Day 3 Stept 2 --- Exercises/src/day_3/StringCheck.java | 140 +++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 Exercises/src/day_3/StringCheck.java diff --git a/Exercises/src/day_3/StringCheck.java b/Exercises/src/day_3/StringCheck.java new file mode 100644 index 0000000..239735c --- /dev/null +++ b/Exercises/src/day_3/StringCheck.java @@ -0,0 +1,140 @@ +package day_3; + +import java.util.Scanner; + +/* + * StringCheck.java + * ------------------------------------------------------------ + * 【1日目・2日目終了時点のプログラム】 + * + * これは、3日目ミッション「段階1〜3(メソッドへの切り出し)」の + * 出発点として使う、リファクタリング前のベースコードです。 + * + * 3日目の段階1〜3では、このファイルの「動作(画面の表示内容)」は + * 一切変えずに、コードの「構造」だけを inputString() / setUpLogger() + * という別メソッドに整理し直していきます。 + * これが実務でいう「リファクタリング(外から見た動きを変えずに、 + * 中身の構造を整理すること)」です。 + * + * この時点では、まだ次のことを行っていません(後日のミッションで扱います)。 + * ・main以外のメソッドへの切り出し + * ・ログ出力(Logger)の実装 + * ・例外処理(try-catch) + * ------------------------------------------------------------ + */ +public class StringCheck { + + public static void main(String[] args) { + + // ============================================================ + // 1日目 段階1:画面に表示する文言を、あらかじめ配列にまとめておく + // ============================================================ + // 何度も使う固定の文言は、1つずつバラバラに書くのではなく、 + // 配列にまとめておくと管理しやすい。 + // messages[0] … 入力を促すプロンプト + // messages[1] … 未入力(または空白のみ)のときのエラーメッセージ + // messages[2] … 文字数が多すぎるときのエラーメッセージ + // messages[3] … 投稿が成功したときに表示するバナー + String[] messages = { + "いまなにしてる?", + "何も入力されていません", + "投稿文が長すぎます", + "↓↓↓↓↓↓ 投稿されました ↓↓↓↓↓↓" + }; + + // ============================================================ + // 2日目 段階1:標準入力を読み取る準備をする + // ============================================================ + // Scanner は、キーボードからの入力(標準入力)を読み取るためのクラス。 + // ループの中で毎回新しく作るのではなく、ループの外で1回だけ用意して + // 使い回す。 + Scanner scanner = new Scanner(System.in); + + // 投稿内容(前後の空白を除去したあとの文字列)を保持する変数。 + // while文を抜けたあとでも使うので、while文の外で宣言しておく。 + String str = ""; + + // ============================================================ + // 2日目 段階1:while(true) で「正しい入力が得られるまで繰り返す」 + // ============================================================ + // 何回繰り返すかがあらかじめ決まっていないので、while(true) の + // 無限ループにして、条件を満たしたときに break でループを抜ける + // 作りにする。 + + inputString (str); // Day 3 stept 1 + isEmptyInput(str);// Day 3 stept 2 + isTooLongInput(str);//Day 3 stept2 + + + + while (true) { + + // ---- 1日目 段階3:プロンプトの表示 ---- + // 配列の0番目に入れておいたプロンプト文言を表示する。 + System.out.println(messages[0]); + + // ---- 1日目 段階2:標準入力の読み込みと空白除去 ---- + // キーボードから1行分の文字列を読み取る。 + String line = scanner.nextLine(); + // 読み取った文字列の前後にある空白文字(半角スペース・全角スペース + // など)を取り除き、str に格納する。 + str = line.strip(); + + // ---- 1日目 段階3:比較演算子で真偽値を求める ---- + // 1日目の時点ではif文がまだ使えなかったため、この2つの真偽値は + // 画面に表示して目視確認するだけだった。 + // 2日目からは、この真偽値をそのままif文の条件として使う。 + boolean isEmpty = (str.length() == 0); + boolean isTooLong = (str.length() > 140); + + // ============================================================ + // 2日目 段階2:if文による検証ロジック + // ============================================================ + if (isEmpty) { + // 何も入力されていない(または空白のみ入力された)場合 + System.out.println(messages[1]); + // continue で、while文の先頭(プロンプト表示)に戻り、 + // もう一度入力をやり直してもらう。 + continue; + } + + if (isTooLong) { + // 141文字以上入力された場合 + System.out.println(messages[2]); + // continue で、while文の先頭に戻る。 + continue; + } + + // ここまで到達したということは、 + // 「空文字でもなく、文字数超過でもない」=正しい入力が得られた + // ということなので、break でループを抜ける。 + break; + } + + // ============================================================ + // 1日目 段階3:投稿完了処理(検証をクリアしたあとの表示) + // ============================================================ + // 空行を1行はさんでから、投稿完了バナーと投稿内容を表示する。 + System.out.println(); + System.out.println(messages[3]); + System.out.println(str); + + + } + //Day 3 Stept 1 + + public static String inputString (String str) { + String Line = str.strip(); + return Line.strip(); + + + } + //Day 3 Stept 2 + public static boolean isEmptyInput(String str) { + return (str.length() == 0); + } + public static boolean isTooLongInput(String str) { + return (str.length() > 140); + + } +}