この記事の確認問題で使用する知識:
丸暗記構文、入力と出力の基本、コメントの書き方、変数と定数、算術演算子、文字列の操作、import文
Pythonのゲームコード一覧はこちら
<<前の問題 | 問題集Top |
次の問題>> |
確認問題1-☆1:ランダムなパスワードを生成しよう
新規ユーザー登録を行うと想定して、ユーザーが入力した名前の一部とランダムな4桁の数字を組み合わせたパスワードを生成するプログラムを作成してください。
ユーザーが入力した4文字以上の名前の先頭4文字を取得し、これにランダムな4桁の数字を結合して、最終的なパスワードを生成します。
ユーザー名と生成されたパスワードを表示することを目標とします。
この問題の要件
以下の要件に従ってコードを完成させてください。
Scanner
クラスを使用して、ユーザー名を入力すること。- 入力された名前の先頭4文字を変数
passName
に保存すること。 Random
クラスを使用して、1000から9999までの4桁の乱数を生成し、変数numPass
に保存すること。passName
とnumPass
を結合して、最終的なパスワードを生成し、変数pass
に保存すること。- ユーザー名と生成されたパスワードを表示すること。
ただし、以下のような実行結果となるコードを書くこと。
*****↓↓正解コードの実行結果の例↓↓*****
新規登録を開始します。ユーザー名をアルファベットで入力してください: > AliceSmith ランダムなパスワードを作成しました。 ユーザー名:AliceSmith パスワード:Alic4729
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)
1:Scanner
クラスと Random
クラスのインポート
2:UserRegistration
クラスの定義
□ main
メソッドの定義
□ □ 新規登録開始メッセージを表示
□ □ Scanner
オブジェクトを作成し、ユーザー入力から名前を取得して変数 name
に保存
□ □ name
の先頭4文字を取得し、変数 passName
に保存
□ □ Random
オブジェクトを使用して1000から9999までの4桁の乱数を生成し、変数 numPass
に保存
□ □ passName
と numPass
を結合して、変数 pass
に保存
□ □ パスワード生成完了メッセージを表示
□ □ ユーザー名と生成されたパスワードを出力
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
import java.util.Scanner; import java.util.Random; public class UserRegistration { public static void main(String[] args) { // 1. 新規登録メッセージを表示 System.out.println("新規登録を開始します。ユーザー名をアルファベット4文字以上で入力してください:"); // 2. ユーザー名を入力し、変数nameに保存 Scanner scanner = new Scanner(System.in); String name = scanner.nextLine(); // 3. nameの先頭4文字を取得し、変数passNameに保存(4文字未満だとエラーになります) /*【穴埋め問題1】 ここでnameの先頭4文字を取得し、変数passNameに保存するコードを書いてください。 */ // 4. 4桁の乱数を生成し、変数numPassに保存 /*【穴埋め問題2】 ここで4桁の乱数を生成し、変数numPassに保存するコードを書いてください。 */ // 5. passNameとnumPassを連結して、変数passに保存 /*【穴埋め問題3】 ここでpassNameとnumPassを連結し、変数passに保存するコードを書いてください。 */ // 6. ランダムなパスワード生成完了メッセージを表示 System.out.println("ランダムなパスワードを作成しました。\n"); // 7. ユーザー名とパスワードを表示 System.out.println("ユーザー名:" + name); System.out.println("パスワード:" + pass); } }
この問題の穴埋めコードは以上です。
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例と解説
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
import java.util.Scanner; import java.util.Random; public class UserRegistration { public static void main(String[] args) { // 1. 新規登録メッセージを表示 System.out.println("新規登録を開始します。ユーザー名をアルファベット4文字以上で入力してください:"); // 2. ユーザー名を入力し、変数nameに保存 Scanner scanner = new Scanner(System.in); String name = scanner.nextLine(); // 3. nameの先頭4文字を取得し、変数passNameに保存(4文字未満だとエラーになります) String passName = name.substring(0, 4); // 4. 4桁の乱数を生成し、変数numPassに保存 Random random = new Random(); int numPass = 1000 + random.nextInt(9000); // 1000〜9999の4桁の乱数 // 5. passNameとnumPassを連結して、変数passに保存 String pass = passName + numPass; // 6. ランダムなパスワード生成完了メッセージを表示 System.out.println("ランダムなパスワードを作成しました。\n"); // 7. ユーザー名とパスワードを表示 System.out.println("ユーザー名:" + name); System.out.println("パスワード:" + pass); } }
正解コードの解説
このJavaコードはユーザーが入力した名前からユーザー名を取得し、それにランダムな4桁の数字を付け加えてパスワードを生成するプログラムです。
以下に各ブロックごとに詳しく解説します。
ライブラリのインポート
import java.util.Scanner; import java.util.Random;
このコードではScanner
クラスと Random
クラスをインポートしています。
Scanner
クラスはユーザーの入力を取得するために使用され、Random
クラスはランダムな数値を生成するために使用されます。
クラスとメインメソッドの定義
public class UserRegistration { public static void main(String[] args) {
UserRegistration
というクラスが定義され、main
メソッドが含まれています。
main
メソッドはJavaプログラムのエントリーポイントであり、プログラムの実行はここから始まります。
新規登録開始メッセージの表示
System.out.println("新規登録を開始します。ユーザー名をアルファベット4文字以上で入力してください:");
この行では新規登録のメッセージを表示しています。
ユーザーが4文字以上のアルファベットで名前を入力するよう促しています。
ユーザーの名前を入力し保存
Scanner scanner = new Scanner(System.in); String name = scanner.nextLine();
Scanner
オブジェクトを作成してユーザーが入力する名前を受け取り、name
という変数に保存します。
名前の先頭4文字を取得
String passName = name.substring(0, 4);
substring
メソッドを使用してname
変数の最初の4文字を取得し、passName
という変数に保存しています。
この操作によりユーザー名の一部がパスワードの一部として利用されます。
4桁のランダムな数字を生成
Random random = new Random(); int numPass = 1000 + random.nextInt(9000);
ここでは Random
クラスを使用して4桁の乱数(1000から9999の範囲)を生成し、numPass
という変数に保存します。
この乱数がパスワードに付け加えられ、パスワードの一部になります。
パスワードの生成
String pass = passName + numPass;
passName
と numPass
を連結し、最終的なパスワードを生成して pass
変数に保存します。
これでパスワードの準備が整います。
ユーザー名とパスワードの表示
System.out.println("ユーザー名:" + name); System.out.println("パスワード:" + pass);
最後にユーザー名と生成したパスワードを表示します。
これにより、ユーザーは自分の登録名と生成されたパスワードを確認できます。
まとめ
このコードではJavaの基本的な文法であるScanner
を使用したユーザー入力、Random
クラスによるランダム数生成、文字列の操作など、初心者にとって重要な要素が含まれています。
ユーザー名にランダムな4桁の数字を付け加えることで、簡単なパスワード生成の仕組みが体験できました。
今後は、条件分岐やループなどを学習して、より複雑なプログラムに挑戦してみましょう!
Pythonのゲームコード一覧はこちら
<<前の問題 |
問題集Top |
次の問題>> |
この記事への質問・コメント
この記事を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。