-1

ランダムな文字列を作成する必要がありますが、これまでランダム クラスを使用したことがありません。

仕様は次の とおりです。ユーザーに名前の入力を求める小さなプログラムを作成します。名前を文字列に保存する 名前を印刷する ユーザーに姓を変更するように依頼する 文字列を新しい姓に操作します。新しい名前を印刷します。文字列変数をランダムに変更する無限ループを作成します。プログラムがクラッシュするかどうかを確認します。

これまでのところ、私はこれを持っています

import java.util.Scanner;
import java.util.Random;

public class StringNames {

    public static void main(String[] args) {

        System.out.println("Please enter a name");

        Scanner myInput = new Scanner(System.in);
        String firstName = new String();
        firstName = myInput.next();

        String lastName = new String();
        lastName = myInput.next();

        System.out.println(firstName + " " + lastName);

        System.out.println("Please change your last name");
        lastName = myInput.next();

        System.out.println(firstName + " " + lastName);

        for (;;) {

        }
    }

}

ランダムな文字列を作成して、無限ループで姓を変更するにはどうすればよいですか? 文字列の長さがどのくらいかわかりません。コードは単純であるほどよい。私は遅いです。

ご指導ありがとうございました

4

1 に答える 1

1

まず、ちょっとしたこと:

String lastName=myInput.next();

クラス文字列を使用して文字列を作成し、その文字列に値を割り当てるよりもはるかに効率的です。

あなたの問題に対する私の解決策は次のとおりです。

    import java.util.Scanner;
    import java.util.Random;

public class StringNames {

public static void main(String[] args) {
    Random generator=new Random();
    Scanner myInput = new Scanner(System.in);

    System.out.println("Please enter a name");
    String firstName = myInput.next();

    System.out.println("Please enter a last name");
    String lastName = myInput.next();

    System.out.println("Your name is:");
    System.out.println(firstName + " " + lastName);

    System.out.println("Please change your last name");
    lastName = myInput.next();

    System.out.println(firstName + " " + lastName);
   char[] lastNameChar=lastName.toCharArray();
    for (int i=0;i<lastNameChar.length;i++) {
        int randomNum=generator.nextInt(133);
        lastNameChar[i]=(char)randomNum;

    }
    lastName=String.valueOf(lastNameChar);
    System.out.println(firstName + " " + lastName);
}
}

これは、指定した名前などの入力を求めるプロンプトを表示します。次に、forループがあります。名前を変更すると、その文字列はchar配列に変換されます。これにより、長さを取得し、「文字列」の個々の要素を変更できます。次に、ランダムに生成された文字として使用される乱数を生成します。

次に、ランダムに生成された数値を、そのようにキャストしてcharに変換します。

これは、値をこのASCII文字テーブルの文字にすぐに変更するということです:ASCII文字

私たちは彼らの新しい名前の長さを続けます。次に、char配列を文字列に変換し直して、文字列を出力します。

数値ジェネレーターの範囲を調整するには(0から133の間で生成された分)、dowhileループを追加するだけです。

  do{
        randomNum=generator.nextInt(133);
  }while(randomNum>33 &&randomNum<120);
于 2013-03-14T01:24:50.157 に答える