Javaプログラミングにおいて、ユーザーからの入力を適切に検証することは、アプリケーションの安全性と信頼性を確保するために欠かせません。不正な入力や予期しないデータがシステムに渡されると、プログラムの誤動作やセキュリティリスクが発生する可能性があります。これを防ぐために、プログラムの中で入力データを厳密に検証する手法が求められます。
本記事では、Javaのwhileループを使用して、ユーザーからの入力を効率的に検証する方法について詳しく解説します。基本的な構文から具体的な実装例、さらに応用的な使用方法まで、順を追って説明していきますので、初心者から中級者まで、幅広いプログラマーが活用できる内容となっています。これにより、あなたのJavaプログラムがより堅牢で信頼性の高いものになるでしょう。
whileループの基礎概念
Javaにおけるwhileループは、条件が真である間、特定のコードブロックを繰り返し実行するための制御構造です。基本的な構文は以下の通りです。
while (条件) {
// 繰り返し実行するコード
}
この構文では、条件
がtrue
である限り、whileループ内のコードが繰り返し実行されます。条件
がfalse
になると、ループが終了し、次のコードが実行されます。
whileループの最も基本的な特徴は、事前条件付きのループであるという点です。つまり、ループが始まる前に条件が評価され、条件が成立しない場合は一度もループ内のコードが実行されない可能性があることです。これにより、無限ループを防ぐことができ、効率的なプログラム制御が可能となります。
例えば、以下のコードは、i
が5未満である限り、i
の値を出力し続けるシンプルな例です。
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
}
この例では、i
の値が0から始まり、ループが回るたびにi
が1ずつ増加します。i
が5になると条件がfalse
になり、ループが終了します。このように、whileループは条件に基づいた繰り返し処理を実現するための強力な手段です。次に、このwhileループを用いて、入力検証をどのように実装するかを見ていきましょう。
入力検証の重要性
ソフトウェア開発において、ユーザー入力の検証は非常に重要な役割を果たします。正しい入力検証を行わないと、プログラムの動作に悪影響を及ぼすだけでなく、セキュリティリスクが生じる可能性もあります。特に、外部からの入力を無条件に受け入れてしまうと、不正なデータがシステムに流れ込み、予期しない挙動を引き起こすことがあります。
プログラムの安定性を保つ
入力検証を適切に実施することで、プログラムの安定性が向上します。ユーザーが期待される形式のデータを入力しない場合、プログラムは予期せぬエラーを起こす可能性があります。例えば、数値を期待している入力フィールドに文字列が入力された場合、プログラムはそのデータを正しく処理できずにクラッシュすることがあります。
セキュリティリスクの軽減
入力検証は、セキュリティリスクを軽減するためにも不可欠です。入力内容を適切に検証しないと、SQLインジェクションやクロスサイトスクリプティング(XSS)といった攻撃に対して脆弱になります。これらの攻撃は、悪意のある入力を通じてシステムに侵入し、データの漏洩や改ざんを引き起こす可能性があります。
ユーザーエクスペリエンスの向上
入力検証は、ユーザーエクスペリエンスを向上させる効果もあります。適切な入力が行われていない場合に、即座にエラーメッセージを表示することで、ユーザーは入力内容を修正する機会を得られます。これにより、ユーザーが間違ったデータを入力しても、適切に修正できるようサポートすることができます。
このように、入力検証はプログラムの信頼性とセキュリティを保つために重要です。次に、whileループを使って入力検証をどのように実装するか、具体的な例を通じて説明していきます。
whileループを用いた入力検証の基本例
Javaのwhileループを利用して、ユーザー入力の検証を行う基本的な方法を紹介します。この手法は、ユーザーが正しい形式の入力を行うまで、繰り返し入力を求めるものです。
基本的な実装例
以下に、ユーザーから整数を入力させるプログラムの基本的な例を示します。このプログラムは、ユーザーが正しい整数を入力するまで繰り返し入力を求めます。
import java.util.Scanner;
public class InputValidationExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number;
while (true) {
System.out.print("整数を入力してください: ");
if (scanner.hasNextInt()) {
number = scanner.nextInt();
break;
} else {
System.out.println("無効な入力です。整数を入力してください。");
scanner.next(); // 無効な入力をクリア
}
}
System.out.println("入力された整数: " + number);
scanner.close();
}
}
コードの説明
このプログラムでは、Scanner
クラスを使用してユーザーからの入力を読み取っています。while(true)
ループを使用して、無限ループを作り、ユーザーが正しい入力を行うまで繰り返し処理を行います。
- まず、
System.out.print("整数を入力してください: ");
でユーザーに整数の入力を促します。 - 次に、
scanner.hasNextInt()
を使用して、ユーザーが入力した値が整数であるかを確認します。整数が入力された場合はnumber
に値を格納し、break
文でループを終了します。 - ユーザーが無効な入力(例: 文字列や浮動小数点数)を行った場合は、
System.out.println("無効な入力です。整数を入力してください。");
でエラーメッセージを表示し、scanner.next()
を呼び出して無効な入力をクリアします。
この方法により、ユーザーが有効な整数を入力するまで、プログラムは何度でも入力を求めることができます。次に、whileループを使用する際に注意すべき無限ループの回避方法について説明します。
無限ループを回避する方法
whileループを用いた入力検証の実装において、無限ループが発生する可能性は避けなければなりません。無限ループとは、ループの終了条件が決して満たされないため、プログラムが永久にループし続ける状態のことを指します。これが発生すると、プログラムは意図した動作をせず、ユーザーはプログラムを強制終了する以外に手段がなくなります。
無限ループの原因
無限ループは、主に以下のような原因で発生します。
- 終了条件の設定ミス:ループ内の変数が更新されない、または正しく評価されない場合、終了条件が満たされず、ループが続行します。
- 入力の誤り:ユーザーが予期しない入力を行い、その処理が正しく行われないと、ループが終了しないことがあります。
- ロジックの誤り:プログラムの設計段階で、ループ終了のための条件が適切に組み込まれていない場合も、無限ループが発生します。
無限ループを防ぐためのポイント
無限ループを防ぐためには、いくつかのポイントを押さえておく必要があります。
1. 終了条件を慎重に設定する
終了条件を正しく設定し、ループ内でその条件が適切に評価されるようにすることが重要です。条件に依存する変数がループ内で適切に更新されることを確認しましょう。
while (i < 10) {
// iを更新するコードが必要
i++;
}
2. 入力検証の段階でエラーハンドリングを行う
ユーザーの入力が予期しない場合でも、プログラムが適切に対処できるように、エラーハンドリングを組み込むことが重要です。例えば、再度入力を促す際には、必ずユーザーに正しい形式で入力を求め、入力が成功するまでループを続けます。
3. 脱出条件を明確にする
無限ループに陥らないためには、脱出条件を明確にすることが不可欠です。例えば、一定回数以上の入力ミスがあった場合にはループを強制終了するような設計を行うことも考えられます。
int attempts = 0;
while (attempts < 5) {
// 入力処理
attempts++;
if (入力が成功した場合) {
break;
}
}
if (attempts == 5) {
System.out.println("入力が5回失敗しました。");
}
このように、無限ループを防ぐためには、終了条件をしっかりと設定し、ユーザーの入力に対して柔軟に対応できるロジックを組み込むことが重要です。次に、複数の入力条件を検証する方法について解説します。
複数の入力条件を検証する方法
Javaプログラムにおいて、whileループを使って複数の入力条件を検証する場合、ユーザーの入力が複数の条件を満たすまで繰り返し処理を行うことができます。これにより、ユーザーに正確で期待された形式のデータを入力してもらうことが可能になります。
複数条件を検証する実装例
次に、ユーザーに特定の範囲内の整数を入力させると同時に、その整数が偶数であるかどうかをチェックする例を紹介します。これにより、複数の条件を一度に検証する方法がわかります。
import java.util.Scanner;
public class MultiConditionValidation {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number;
while (true) {
System.out.print("10から50までの偶数を入力してください: ");
if (scanner.hasNextInt()) {
number = scanner.nextInt();
// 条件1: 10から50までの範囲
// 条件2: 偶数であること
if (number >= 10 && number <= 50 && number % 2 == 0) {
break;
} else {
System.out.println("入力は10から50までの偶数でなければなりません。");
}
} else {
System.out.println("無効な入力です。整数を入力してください。");
scanner.next(); // 無効な入力をクリア
}
}
System.out.println("入力された値: " + number);
scanner.close();
}
}
コードの説明
このプログラムでは、ユーザーに「10から50までの偶数」を入力するよう促します。whileループ内で、以下の2つの条件が満たされるまで繰り返し処理が行われます。
- 範囲チェック: 入力された値が10以上50以下であること。
- 偶数チェック: 入力された値が偶数であること(
number % 2 == 0
で判定)。
ユーザーがこれらの条件を満たす入力を行うと、ループは終了し、入力された値が出力されます。条件を満たさない場合は、エラーメッセージが表示され、再度入力が求められます。
複数条件の検証を行う際のポイント
複数の条件を同時に検証する際には、以下の点に注意が必要です。
- 条件の順序: 複数の条件がある場合、重要な条件から順に評価することが推奨されます。これにより、無駄な計算を避け、効率的に検証を行うことができます。
- エラーメッセージの適切な設定: 各条件に対してユーザーに適切なフィードバックを提供することが重要です。どの条件に違反しているのかを明確に伝えることで、ユーザーが正しい入力を行いやすくなります。
- 条件を複雑化しすぎない: 条件が多くなると、検証のロジックが複雑になりがちです。必要に応じてメソッドを分けるなどして、コードの可読性とメンテナンス性を保つようにしましょう。
複数の条件をwhileループで検証することにより、プログラムはより強力かつ安全なものとなります。次に、try-catchを組み合わせた例外処理について解説します。
try-catchを組み合わせた例外処理
whileループを用いた入力検証において、入力が不正である場合や予期しないエラーが発生した場合に備えて、例外処理を組み込むことは重要です。これにより、プログラムが予期しない入力やエラーでクラッシュするのを防ぎ、ユーザーに適切なフィードバックを提供できます。
例外処理の基礎
Javaの例外処理は、try-catchブロックを用いて実装されます。try
ブロック内にエラーが発生する可能性のあるコードを配置し、エラーが発生した場合はcatch
ブロックでそのエラーを捕捉し、適切な処理を行います。
try {
// エラーが発生する可能性のあるコード
} catch (例外の種類 例外の変数) {
// エラー処理
}
例外処理を組み合わせた入力検証の実装例
次に、ユーザーに数値を入力させるプログラムに例外処理を組み込んだ例を紹介します。このプログラムでは、ユーザーが誤って文字列や無効な数値を入力した場合でも、プログラムがエラーで停止することなく、再度正しい入力を促すようになっています。
import java.util.InputMismatchException;
import java.util.Scanner;
public class InputValidationWithTryCatch {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = 0;
boolean validInput = false;
while (!validInput) {
System.out.print("整数を入力してください: ");
try {
number = scanner.nextInt();
validInput = true; // 入力が成功したらループを終了
} catch (InputMismatchException e) {
System.out.println("無効な入力です。整数を入力してください。");
scanner.next(); // 無効な入力をクリア
}
}
System.out.println("入力された整数: " + number);
scanner.close();
}
}
コードの説明
このプログラムは、try-catchブロックを使用して入力検証を行います。
- tryブロック内での入力処理:
scanner.nextInt()
を使用してユーザーから整数を取得します。もしユーザーが整数以外の値を入力した場合、InputMismatchException
が発生します。 - catchブロックでのエラーハンドリング:
InputMismatchException
が発生すると、catchブロック内のコードが実行され、エラーメッセージが表示されます。その後、scanner.next()
を呼び出して不正な入力をクリアし、再度入力を促します。 - ループの制御: ユーザーが正しい整数を入力した場合、
validInput
がtrue
に設定され、whileループが終了します。
例外処理を利用する利点
例外処理を組み合わせることで、以下のような利点があります。
- プログラムの堅牢性が向上: 予期しない入力やエラーが発生してもプログラムが停止せず、適切に対応できるようになります。
- ユーザーエクスペリエンスの向上: ユーザーに正しいフィードバックを提供し、適切な入力を促すことができます。
- コードの見通しが良くなる: try-catchブロックを使用することで、エラーハンドリングの部分が明確に分かれ、コードの可読性が向上します。
このように、try-catchを組み合わせた例外処理を導入することで、入力検証をより堅牢に行うことができます。次に、ユーザーに適切なエラーメッセージを提供するための方法について解説します。
ユーザーへのエラーメッセージの提供
入力検証において、ユーザーに対して適切なエラーメッセージを提供することは、プログラムの使いやすさを向上させる上で非常に重要です。ユーザーが何を間違えたのか、どう修正すればよいのかを明確に伝えることで、入力エラーを効率的に解決できます。
エラーメッセージの基本原則
効果的なエラーメッセージを作成するためには、以下の基本原則を考慮する必要があります。
1. 明確で具体的なメッセージ
エラーメッセージは、ユーザーにとってわかりやすく、具体的であるべきです。曖昧なメッセージは避け、何が問題なのかを明確に伝えます。例えば、「無効な入力です。」ではなく、「入力された値が範囲外です。10から50の間の値を入力してください。」のように具体的なメッセージを表示します。
2. 親しみやすく、丁寧な表現
エラーメッセージは、ユーザーがストレスを感じないよう、丁寧で親しみやすい表現を使用することが大切です。攻撃的な口調や難解な表現は避け、フレンドリーなトーンを保ちます。
3. 問題の解決方法を提案
ユーザーが次に何をすべきかを明確に示します。修正方法や正しい入力の例を提示することで、ユーザーが問題を迅速に解決できるようにします。
実装例: エラーメッセージの提供
次に、ユーザーに対して適切なエラーメッセージを表示する例を示します。このプログラムでは、ユーザーが不正な入力を行った際に、具体的なエラーメッセージを提供します。
import java.util.Scanner;
public class ErrorMessageExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = 0;
boolean validInput = false;
while (!validInput) {
System.out.print("10から50までの整数を入力してください: ");
if (scanner.hasNextInt()) {
number = scanner.nextInt();
if (number >= 10 && number <= 50) {
validInput = true; // 正しい入力が得られた場合、ループを終了
} else {
System.out.println("エラー: 入力された値が範囲外です。10から50の間の整数を入力してください。");
}
} else {
System.out.println("エラー: 無効な入力です。整数を入力してください。");
scanner.next(); // 無効な入力をクリア
}
}
System.out.println("入力された値: " + number);
scanner.close();
}
}
コードの説明
このプログラムでは、ユーザーが正しい範囲内の整数を入力するまで、具体的なエラーメッセージを表示して再入力を促します。
- 範囲外の入力に対するメッセージ: ユーザーが10から50の範囲外の整数を入力した場合、具体的に「エラー: 入力された値が範囲外です。10から50の間の整数を入力してください。」と表示します。
- 無効な入力に対するメッセージ: ユーザーが整数以外の値を入力した場合、「エラー: 無効な入力です。整数を入力してください。」とメッセージを表示し、入力をクリアします。
エラーメッセージの改善ポイント
さらに効果的なエラーメッセージを提供するためには、以下の点も考慮すると良いでしょう。
- エラーメッセージの一貫性: プログラム全体でエラーメッセージのトーンやスタイルを一貫させることで、ユーザーに安心感を与えます。
- ユーザーの視点を考慮する: 技術的な表現は避け、ユーザーが理解しやすい言葉でエラーメッセージを作成します。
- ローカライズ対応: 国際的なアプリケーションの場合、エラーメッセージを複数の言語に対応させることも重要です。
このように、適切なエラーメッセージを提供することで、ユーザーに対して親切で使いやすいプログラムを実現できます。次に、実際のプログラムでよく使われるメニュー選択の入力検証の実装例について説明します。
実践例: メニュー選択の入力検証
実際のアプリケーションでは、ユーザーが特定のメニューから選択を行うケースがよくあります。この場合、正しい選択肢が入力されるまでユーザーに再入力を促すために、入力検証を行う必要があります。ここでは、Javaでのメニュー選択における入力検証の実装例を紹介します。
メニュー選択の入力検証の実装例
以下に、ユーザーに1〜3の選択肢からメニューを選んでもらうプログラムを示します。ユーザーが正しい選択肢を入力するまで、whileループを用いて再入力を促します。
import java.util.Scanner;
public class MenuSelectionExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int choice = 0;
boolean validChoice = false;
while (!validChoice) {
System.out.println("メニューを選択してください:");
System.out.println("1. オプション1");
System.out.println("2. オプション2");
System.out.println("3. オプション3");
System.out.print("選択肢 (1-3): ");
if (scanner.hasNextInt()) {
choice = scanner.nextInt();
if (choice >= 1 && choice <= 3) {
validChoice = true; // 正しい選択が入力された場合、ループを終了
} else {
System.out.println("エラー: 1から3の間で選択してください。");
}
} else {
System.out.println("エラー: 無効な入力です。数字で選択してください。");
scanner.next(); // 無効な入力をクリア
}
}
System.out.println("選択されたオプション: " + choice);
scanner.close();
}
}
コードの説明
このプログラムでは、ユーザーに1から3の選択肢からメニューを選択させ、正しい入力が得られるまで再入力を促します。
- メニューの表示:
System.out.println
を用いて、ユーザーに選択肢を表示します。選択肢は「1. オプション1」「2. オプション2」「3. オプション3」です。 - 入力検証:
scanner.hasNextInt()
でユーザーの入力が整数であるかを確認します。整数である場合、次にその値が1から3の範囲にあるかをチェックします。 - 無効な選択に対するエラーメッセージ: ユーザーが1から3以外の値を入力した場合、「エラー: 1から3の間で選択してください。」というエラーメッセージを表示し、再度入力を促します。
- 無効な入力に対するエラーメッセージ: ユーザーが整数以外の値を入力した場合、「エラー: 無効な入力です。数字で選択してください。」とメッセージを表示し、入力をクリアします。
実践的な応用
このメニュー選択の入力検証は、以下のような場面で活用できます。
- ユーザーインターフェースの選択: コンソールベースのアプリケーションで、複数の操作を選択させる場合。
- 設定画面でのオプション選択: 設定変更を行う際に、複数の設定項目から選択させる場面。
- ゲームメニュー: ゲーム内でプレイヤーに行動を選択させる場面など。
このように、メニュー選択の入力検証は、多くのアプリケーションで役立つ基本的なスキルです。次に、数値入力の検証と再試行に関する応用的な例を解説します。
応用: 数値入力の検証と再試行
数値入力の検証は、多くのJavaアプリケーションで頻繁に必要とされる操作です。特に、ユーザーが特定の範囲内の数値や特定の形式の数値を入力する必要がある場合、適切な入力検証と再試行のロジックを実装することが重要です。ここでは、数値入力の検証における応用的な実装例を紹介します。
数値入力の検証と再試行の実装例
以下に、ユーザーに正の整数を入力させ、正しい入力が得られるまで再試行を促すプログラムを示します。この例では、ユーザーが負の数や無効な入力を行った場合、再度入力を求めます。
import java.util.Scanner;
public class PositiveNumberValidation {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = -1; // 初期値を負の数に設定
boolean validInput = false;
while (!validInput) {
System.out.print("正の整数を入力してください: ");
if (scanner.hasNextInt()) {
number = scanner.nextInt();
if (number > 0) {
validInput = true; // 入力が正の整数の場合、ループを終了
} else {
System.out.println("エラー: 正の整数を入力してください。");
}
} else {
System.out.println("エラー: 無効な入力です。整数を入力してください。");
scanner.next(); // 無効な入力をクリア
}
}
System.out.println("入力された正の整数: " + number);
scanner.close();
}
}
コードの説明
このプログラムでは、ユーザーに正の整数を入力させ、無効な入力が行われた場合には再度入力を促します。
- 初期設定:
number
変数を負の数で初期化し、validInput
フラグをfalse
に設定します。これにより、ループが少なくとも一度は実行されることが保証されます。 - 数値入力の検証:
scanner.hasNextInt()
で入力が整数であることを確認し、その後number
が正の整数であるかをチェックします。 - 無効な入力の処理: 入力が整数でない場合、または負の整数やゼロが入力された場合に、エラーメッセージを表示し、再入力を促します。特に、
scanner.next()
を使用して無効な入力をクリアし、次の入力に備えます。
再試行ロジックの応用
この再試行ロジックは、様々な応用が可能です。
- 制限付き再試行: 再試行回数を制限し、特定の回数に達したらプログラムを終了するか、別の処理を行うようにすることができます。
int attempts = 0;
int maxAttempts = 3;
while (!validInput && attempts < maxAttempts) {
// 入力処理
attempts++;
}
if (!validInput) {
System.out.println("入力エラーが多すぎます。終了します。");
}
- 異なるデータ型の入力検証: 同様のロジックを使用して、例えば浮動小数点数や文字列など、他のデータ型の入力検証を行うことができます。
- 複数フィールドの検証: 一度に複数の入力フィールドを検証し、それぞれに対して再試行を促すような、より複雑な入力フォームの検証にも応用できます。
このように、数値入力の検証と再試行ロジックは、さまざまな場面で役立つ汎用的な技術です。次に、これまでの記事の内容を振り返り、学んだことを応用するための演習問題を提示します。
演習問題: 入力検証の実装練習
ここまで学んだJavaのwhileループを使った入力検証の知識を実際に応用できるよう、いくつかの演習問題を用意しました。これらの問題に取り組むことで、入力検証の基本から応用までを実践的に理解し、スキルを深めることができます。
演習問題1: 範囲内の数値を入力させる
ユーザーに0から100までの整数を入力させるプログラムを作成してください。無効な入力が行われた場合には、適切なエラーメッセージを表示し、再入力を求めるようにしてください。
ヒント: 入力が整数かどうかを確認し、その整数が0から100の範囲内にあるかを検証する必要があります。
演習問題2: メニュー選択の検証とカウントダウン
ユーザーに4つのメニューオプションから選択させるプログラムを作成してください。無効な入力が行われた場合、再試行を3回まで許可し、それ以降は「入力エラーが多すぎます。終了します。」と表示してプログラムを終了するようにしてください。
ヒント: 再試行回数をカウントし、3回を超えたらループを終了するようにします。
演習問題3: 文字列の形式検証
ユーザーに、特定の形式(例えば、YYYY-MM-DDのような日付形式)の文字列を入力させるプログラムを作成してください。入力がこの形式に合わない場合には、再入力を求めるようにしてください。
ヒント: 正規表現(Regex
)を使用して、入力された文字列が指定の形式に合致するかどうかを検証します。
演習問題4: 複数フィールドの入力検証
ユーザーに名前、年齢、メールアドレスを入力させるプログラムを作成してください。各入力フィールドに対して適切な入力検証を行い、無効な入力があれば再入力を求めるようにしてください。例えば、年齢は整数であり、メールアドレスは@
と.
を含む形式でなければなりません。
ヒント: 各フィールドごとにwhileループを使用し、個別に入力検証を行います。
演習問題5: 動的メニューの選択肢
ユーザーが事前に設定したリストから選択肢を選べるメニューを作成してください。選択肢のリストは配列で保持し、ユーザーの入力がそのリストの要素と一致するかどうかを検証してください。
ヒント: リスト(配列やArrayList
)を使用して選択肢を動的に保持し、ユーザーの入力がリストのいずれかの要素に一致するかをチェックします。
まとめ
これらの演習問題に取り組むことで、Javaでの入力検証のスキルを実践的に磨くことができます。whileループや例外処理を効果的に活用し、堅牢でユーザーフレンドリーなアプリケーションを開発する基礎力を養ってください。各問題に取り組んだ後、コードをレビューし、さらに改良できる点がないかを考えることも、スキル向上に役立ちます。
まとめ
本記事では、Javaのwhileループを使った入力検証の方法について、基本的な概念から応用例まで詳しく解説しました。whileループを使用することで、ユーザーに正しい入力が行われるまで再試行を促す堅牢なプログラムを作成できます。また、try-catchによる例外処理や、複数条件の検証、エラーメッセージの提供といった技術を組み合わせることで、プログラムの信頼性とユーザーエクスペリエンスを向上させることができます。
さらに、実践的な演習問題を通じて、入力検証におけるスキルを深め、さまざまな状況に対応できるプログラムを構築する力を養うことができます。これにより、堅牢で信頼性の高いJavaアプリケーションを開発するための基礎をしっかりと築くことができるでしょう。
今後、さらに複雑な入力検証や他の制御構造の活用にも挑戦し、プログラミングスキルを磨いてください。
コメント