我需要创建一个随机的字母串,但之前从未使用过随机类。
这是规格: 创建一个小程序,要求用户输入其名称。 将名称存储在字符串中 打印名称 要求用户更改其姓氏 将字符串操作为新的姓氏。 打印新名称。 创建一个无限循环,随机更改字符串变量。看看你的程序是否会崩溃。
到目前为止,我有这个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 (;;) {
}
}
}
如何创建随机字符串以将姓氏更改为无限循环?我不确定字符串必须有多长。代码越简单越好。我很慢。
感谢您的指导
答案 0 :(得分: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数组,这允许我们获取长度并更改“String”的各个元素。然后我们生成一个随机数作为随机生成的字符。
然后我们将casting随机生成的数字转换为char。
这样做会立即将值更改为此ASCII字符表中的字符:ASCII Characters
我们继续他们新姓的长度。然后将char数组转换回字符串,并打印字符串。
为了优化数字生成器的范围(在0到133之间生成的那一分钟),只需添加do while循环:
do{
randomNum=generator.nextInt(133);
}while(randomNum>33 &&randomNum<120);