我希望在Java的每个程序编译中生成一个6个字符的随机字符串。
例如:AXFGCD,GDGXSD,PLRSFX,GLTSDL
public class generate{
public static void main(String args[]){
generate();
}
string word = "";
string Characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void generate(int x){
if (x==7) return;
int time = System.currentTimeMillis() % 33; //to generate time in mili second
word += characters.charAt(time);
System.out.println(time);
return generate(++x);
}
}
输出
A,AX,AXF,AXFC,AXFCG,AXFCGA
但我想要直接的6位数词
答案 0 :(得分:2)
这是用Notepad ++编写的,因为我目前没有任何IDE可用,我希望这个编译,如果它确实应该工作:) 如果你想使用大写字符,只需编辑for循环!
public class generate{
private static char[] characters;
private static Random random = new Random();
public static void main(String args[]){
characters = new char[26];
int index = 0;
for (char c = 'a'; c <= 'z'; c++) {
characters[index++] = c;
}
System.out.println(generate());
}
static String generate() {
String word = "";
for(int i = 0 ; i < 7 ; i++) {
word += Character.toString(characters[random.nextInt(characters.length)]);
}
return word;
}
}
编辑:使用您的代码!
public class generate{
public static void main(String args[]){
generate();
}
string word = "";
string Characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void generate(int x){
if (x==7) {
System.out.println(word);
return;
}
int time = System.currentTimeMillis() % 33; //to generate time in mili second
word += characters.charAt(time);
return generate(++x);
}
}
答案 1 :(得分:1)
您的方法正在实现您的目标。您的问题是您通过在方法中打印它们来“记录”您的步骤(此外,还有string
等错误,错误地调用了您的generate
功能,但是因为您给了我们输出我猜你在某些时候固定它。)
如果你这样做:
public class generate{
public static void main(String args[]){
generate(0);
System.out.println(word); // Here word is complete
}
String word = "";
String Characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void generate(int x){
if (x==7) return;
int time = System.currentTimeMillis() % 33; //to generate time in mili second
word += characters.charAt(time);
return generate(++x);
}
}
它会起作用。或者,要在函数中打印word
,您可以使用迭代方法:
void generate(){
for (int i = 6; i --> 0;) {
int time = System.currentTimeMillis() % 33; //to generate time in mili second
word += characters.charAt(time);
}
System.out.println(word);
}