import java.util.Random;
public class Test {
public static void main(String[] args) {
randomIDGenerator();
}
public static String randomIDGenerator() {
Random r = new Random();
char a = 0;
for (int i = 0; i < 3; i++) {
a = (char) (r.nextInt(26) + 'a');
}
int b = 0;
for (int j = 0; j < 2; j++) {
b = r.nextInt(10);
}
String h = "" + b;
String n = a + h;
System.out.println(n);
return n;
}
}
我正在用Java编写代码,我想要输出从a到z的3个字符和从0到9的2个数字(例如abc01),但程序给我1个字符和1个数字(例如a1)。尽管我已经将3和2放入循环中,为什么程序会这样做呢?据我所知,第一个循环必须运行3次,第二个循环必须运行2次。所以最后我的输出必须是3个字符和2个数字。谢谢!
答案 0 :(得分:1)
char
和int
可以存储一个值,因此请使用String
String a = "";
for (int i = 0; i < 3; i++) {
a += (char) (r.nextInt(26) + 'a');
}
for (int j = 0; j < 2; j++) {
a += r.nextInt(10);
}
return a;
答案 1 :(得分:1)
您可以正确生成随机项,但不能以正确的方式收集结果。循环的每次迭代都会在先前迭代的结果上进行写入,同时将a
和b
都包含在最后一次迭代的结果中。
我建议您在生成字符时使用StringBuilder
来存储字符:
Random r = new Random();
StringBuilder res = new StringBuilder();
for (int i = 0; i < 3; i++) {
res.append((char)(r.nextInt(26) + 'a'));
}
for (int j = 0; j < 2; j++) {
res.append(r.nextInt(10)); // You could use the same trick with '0'
}
System.out.println(res);