From c1ac7e7cd4db4e8ebe0d647a355fd0a799c502c5 Mon Sep 17 00:00:00 2001 From: y-ogawa <26-y-ogawa-tmn@it-college.co.jp> Date: Thu, 10 Sep 2026 16:53:51 +0900 Subject: [PATCH] =?UTF-8?q?Day3=20=E6=AE=B5=E9=9A=8E1=E3=81=A7=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 短文投稿プログラム/src/Day3/StringCheck.java | 124 ++++++++++++++++++ .../src/短文投稿プログラム/StringCheck.java | 22 +++- 2 files changed, 142 insertions(+), 4 deletions(-) create mode 100644 短文投稿プログラム/src/Day3/StringCheck.java diff --git a/短文投稿プログラム/src/Day3/StringCheck.java b/短文投稿プログラム/src/Day3/StringCheck.java new file mode 100644 index 0000000..ec4f4e3 --- /dev/null +++ b/短文投稿プログラム/src/Day3/StringCheck.java @@ -0,0 +1,124 @@ +package Day3; + +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:標準入力を読み取る準備をする + + // 投稿内容(前後の空白を除去したあとの文字列)を保持する変数。 + // while文を抜けたあとでも使うので、while文の外で宣言しておく。 + String str ="" ; + + // ============================================================ + // 2日目 段階1:while(true) で「正しい入力が得られるまで繰り返す」 + // ============================================================ + // 何回繰り返すかがあらかじめ決まっていないので、while(true) の + // 無限ループにして、条件を満たしたときに break でループを抜ける + // 作りにする。 + while (true) { + + // ---- 1日目 段階3:プロンプトの表示 ---- + // 配列の0番目に入れておいたプロンプト文言を表示する。 + System.out.println(messages[0]); + + // ---- 1日目 段階2:標準入力の読み込みと空白除去 ---- + str = inputString(); + + + // ---- 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); + + } + + public static String inputString() { + // Scanner は、キーボードからの入力(標準入力)を読み取るためのクラス。 + // ループの中で毎回新しく作るのではなく、ループの外で1回だけ用意して + // 使い回す。 + Scanner scanner = new Scanner(System.in); + + + // キーボードから1行分の文字列を読み取る。 + String line = scanner.nextLine(); + // 読み取った文字列の前後にある空白文字(半角スペース・全角スペース + // など)を取り除き、str に格納する。 + String str= line.strip(); + + return str; + } +} diff --git a/短文投稿プログラム/src/短文投稿プログラム/StringCheck.java b/短文投稿プログラム/src/短文投稿プログラム/StringCheck.java index b5a47b4..d6adacb 100644 --- a/短文投稿プログラム/src/短文投稿プログラム/StringCheck.java +++ b/短文投稿プログラム/src/短文投稿プログラム/StringCheck.java @@ -19,19 +19,33 @@ public class StringCheck { System.out.println(str); boolean isEmpty = str.isEmpty(); - System.out.println(isEmpty); - + + if(isEmpty = true) { + System.out.println("何も入力されていません"); + continue; + } + //System.out.println(isEmpty); + int strLength = str.length(); System.out.println(strLength + "文字"); boolean isRange = strLength > 140; System.out.println(isRange); + + if(isRange = true) { + System.out.println("投稿文が長すぎます"); + continue; + } + + System.out.println("\n" + comment[3]); + System.out.println(str); - System.out.println(140 - str.length()); + // System.out.println(140 - str.length()); for (String commentt: comment) System.out.println(commentt); - } + + } } }