# 1日目 実装ミッション指示書 ## この指示書について このミッションは、「StringCheck 詳細設計書」で定義されている短文投稿プログラムの完成を目指す、複数日にわたる実装課題の1日目です。今日の講義で習った内容だけを使って、`StringCheck.java` の土台となる部分を組み立てます。 ### 今日はまだ次のことを習っていません。使わないでください。 - `if` / `switch` / `for` / `while` などの制御構文(ループ・条件分岐) - 独自のメソッドを定義すること(`inputString()` や `setUpLogger()` などは、まだ作りません) - 例外処理(`try` / `catch`) - ログ出力(`Logger`) ### 今日使ってよいもの - 基本データ型(`int`, `double`, `boolean`, `char` など)と変数宣言・リテラル - 算術演算子・比較演算子・論理演算子 - 配列(1次元配列)の宣言・初期化 - 標準入力から文字列を読み取る方法、文字列の前後の空白を除去する方法(★自分で調べること。下記「参考」を参照) すべての処理は `main` メソッド1本の中に、上から順番に書き並べてください。メソッドへの切り出し(リファクタリング)は、メソッドの定義方法を習った後日のミッションで行います。 ## 開発環境について(Eclipse) 本ミッションは **Eclipse** を使用する前提とします。あらかじめ Java プロジェクトを作成し、その中に `StringCheck` という名前のクラスを作成してください(クラス名に合わせて、Eclipseが自動的に `StringCheck.java` というファイルを作成します)。 - **コンパイルエラーの確認方法:** `javac` コマンドは使いません。Eclipseはファイルを保存すると自動でコンパイルします。エディタの左端(行番号の横)や、Package Explorer上のファイル・プロジェクトのアイコンに赤い×印(エラーマーカー)が付いていなければ、コンパイルエラーはありません。 - **実行方法:** エディタ上で右クリック →「実行(Run As)」→「Java アプリケーション(Java Application)」を選択するか、ツールバーの緑色の実行ボタンを押してください。 - **入力の方法:** 実行すると画面下部に **[コンソール](Console)** ビューが開きます。コンソール内をクリックしてカーソルを合わせてから文字を入力し、Enterキーを押すとプログラムに入力を渡せます。 ## 今日のゴール `StringCheck.java` を作成し、次の一連の流れを、**検証(未入力チェック・文字数チェック)なしの「正常系のみ」**で動作させます。 ``` いまなにしてる? (ここでユーザーが文章を入力する) ↓↓↓↓↓↓ 投稿されました ↓↓↓↓↓↓ (入力した文章がそのまま表示される) ``` ## 進め方(3段階) ### 段階1:クラスの雛形とメッセージ配列の定義 1. `StringCheck` という名前のクラスを作成し、`public static void main(String[] args)` を用意してください(他のメソッドはまだ作りません)。 2. 画面に表示する以下の文言を、1つの `String` 配列にまとめて `main` の中に宣言・初期化してください。 - `"いまなにしてる?"` - `"何も入力されていません"` - `"投稿文が長すぎます"` - `"↓↓↓↓↓↓ 投稿されました ↓↓↓↓↓↓"` **この段階の完了確認** - エディタおよびPackage Explorer上に赤いエラーマーカーが表示されていないこと(コンパイルエラーがないこと) - 配列の要素数が4つで、内容が上記と一字一句一致していること ### 段階2:標準入力の読み込みと空白除去 1. `main` の中に直接、標準入力から1行分の文字列を読み込む処理を書いてください。 2. 読み込んだ文字列の前後にある空白文字(半角スペース・全角スペースなど)を除去し、`String` 型の変数 `str` に格納してください。 3. 動作確認のため、`str` の内容をそのまま画面に表示してください。 **この段階の完了確認** - Eclipseで実行し、[コンソール]に前後に半角・全角スペースを含む文章(例:` 今日は晴れ `)を入力すると、スペースが除去された状態(`今日は晴れ`)で表示されること **参考(自分で調べること)** 「標準入力から1行読み取る方法」「文字列の前後の空白を除去する方法」は、[Java SE 21 API ドキュメント(日本語版)](https://docs.oracle.com/javase/jp/21/docs/api/index.html) で調べてください。「Java + 実現したいこと」で検索すると見つけやすくなります。自分で見つけたクラスやメソッドの仕様(引数・戻り値・挙動)は、必ず公式ドキュメントで裏を取ってから使用してください。 ### 段階3:判定値の算出と、正常系のみの一連の流れの実装 1. 段階2で `str` に格納した文字列の**文字数**をもとに、比較演算子を使って次の2つの真偽値(`boolean`)を求め、画面に表示してください。**`if` 文はまだ使わず、値を表示するだけで構いません。** - 空文字判定:`str` の文字数が `0` かどうか - 文字数超過判定:`str` の文字数が `140` を超えるかどうか 2. 算術演算子を使って「残り入力可能文字数(`140 - 文字数`)」を計算し、画面に表示してください。 3. 次の一連の流れを、`main` の中に上から順番に書き並べて完成させてください(検証は行わず、必ず投稿が成功する「正常系のみ」の流れです)。 1. 配列から取り出した「いまなにしてる?」を表示する 2. 段階2の読み込み処理で `str` に値を格納する 3. 空行を1行表示する 4. 配列から取り出した投稿完了バナーを表示する 5. `str` の内容を表示する **この段階の完了確認(動作例)** Eclipseで実行し、[コンソール]で次のように動作することを確認してください。 ``` いまなにしてる? ラーメンを食べています ↓↓↓↓↓↓ 投稿されました ↓↓↓↓↓↓ ラーメンを食べています ``` - 上記のように、入力した文章がそのまま投稿として表示されること - 真偽値・残り文字数の表示が、入力する文章の長さに応じて正しく変化すること(空文字を入力した場合や、141文字以上を入力した場合など、複数パターンを自分の目で確認すること) ## 提出物 - 作成した `StringCheck.java` - 動作確認メモ(段階2・段階3の完了確認で、どんな入力を試して、どう表示されたかを簡単に記録したもの。詰まった点があれば併記してください) ## 今日は実装しないこと(翌日以降に扱います) - 未入力・文字数超過時に「再表示して入力させ直す」処理(`if` 文・ループが必要なため) - `inputString()` や `setUpLogger()` のような独立したメソッドへの切り出し - ログ出力(`Logger` によるファイル出力)