【JAVA】確認問題1-☆1:ランダムなパスワードを生成しよう

記事内に商品プロモーションを含む場合があります

この記事の確認問題で使用する知識:
丸暗記構文入力と出力の基本コメントの書き方変数と定数算術演算子文字列の操作import文

Pythonのゲームコード一覧はこちら

<<前の問題 問題集Top 次の問題>>

確認問題1-☆1:ランダムなパスワードを生成しよう

新規ユーザー登録を行うと想定して、ユーザーが入力した名前の一部とランダムな4桁の数字を組み合わせたパスワードを生成するプログラムを作成してください。

ユーザーが入力した4文字以上の名前の先頭4文字を取得し、これにランダムな4桁の数字を結合して、最終的なパスワードを生成します。

ユーザー名と生成されたパスワードを表示することを目標とします。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • Scanner クラスを使用して、ユーザー名を入力すること。
  • 入力された名前の先頭4文字を変数 passName に保存すること。
  • Random クラスを使用して、1000から9999までの4桁の乱数を生成し、変数 numPass に保存すること。
  • passNamenumPass を結合して、最終的なパスワードを生成し、変数 pass に保存すること。
  • ユーザー名と生成されたパスワードを表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

新規登録を開始します。ユーザー名をアルファベットで入力してください:
> AliceSmith

ランダムなパスワードを作成しました。

ユーザー名:AliceSmith
パスワード:Alic4729

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:Scanner クラスと Random クラスのインポート
2:UserRegistration クラスの定義
  □ main メソッドの定義
  □ □ 新規登録開始メッセージを表示
  □ □ Scanner オブジェクトを作成し、ユーザー入力から名前を取得して変数 name に保存
  □ □ name の先頭4文字を取得し、変数 passName に保存
  □ □ Random オブジェクトを使用して1000から9999までの4桁の乱数を生成し、変数 numPass に保存
  □ □ passNamenumPass を結合して、変数 pass に保存
  □ □ パスワード生成完了メッセージを表示
  □ □ ユーザー名と生成されたパスワードを出力

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

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;

passNamenumPass を連結し、最終的なパスワードを生成して pass 変数に保存します。

これでパスワードの準備が整います。

ユーザー名とパスワードの表示

System.out.println("ユーザー名:" + name);
System.out.println("パスワード:" + pass);

最後にユーザー名と生成したパスワードを表示します。

これにより、ユーザーは自分の登録名と生成されたパスワードを確認できます。

まとめ

このコードではJavaの基本的な文法であるScanner を使用したユーザー入力、Random クラスによるランダム数生成、文字列の操作など、初心者にとって重要な要素が含まれています。

ユーザー名にランダムな4桁の数字を付け加えることで、簡単なパスワード生成の仕組みが体験できました。

今後は、条件分岐やループなどを学習して、より複雑なプログラムに挑戦してみましょう!

Pythonのゲームコード一覧はこちら

<<前の問題 問題集Top 次の問題>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    JAVAテキスト&問題集へ戻る
    トップページへ戻る