应返回9个字符随机字符串的Java函数
这个函数非常简单,我就是不知道出了什么问题应返回9个字符随机字符串的Java函数,java,string,random,Java,String,Random,这个函数非常简单,我就是不知道出了什么问题 private String genRandKey() { rnd.setSeed(datetime.getTime()); String keyset = "abcdefghijklmABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"Ł$%^&*()_+-=[]{}:@~;'#<>?|\\,./"; String key = new String(); for (int
private String genRandKey() {
rnd.setSeed(datetime.getTime());
String keyset = "abcdefghijklmABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"Ł$%^&*()_+-=[]{}:@~;'#<>?|\\,./";
String key = new String();
for (int i = 0; i < 9; i++) {
key.concat(String.valueOf(keyset.charAt(rnd.nextInt(keyset.length() - 1))));
}
return key;
}
私有字符串genRandKey(){
rnd.setSeed(datetime.getTime());
String keyset=“ABCDEFGHIJKLMABCDFGHIJKLMNOPQRSTUVWXYZ0123456789!\”Ł$^&*()+-=[]{}:@~;'#?| \,./”;
字符串键=新字符串();
对于(int i=0;i<9;i++){
key.concat(String.valueOf(keyset.charAt(rnd.nextInt(keyset.length()-1)));
}
返回键;
}
它只返回一个空字符串。
concat
返回一个新字符串,它不能修改原始字符串,它们是不可变的,我建议使用一个concat
返回一个新字符串,它不能修改原始字符串,它们是不可变的,我建议使用一个字符串是不可变的对象,所以您需要这样做
key = key.concat(String.valueOf(keyset.charAt(rnd.nextInt(keyset.length() - 1))));
字符串是不可变的对象,所以您需要
key = key.concat(String.valueOf(keyset.charAt(rnd.nextInt(keyset.length() - 1))));
一种更快更简单的方法是使用StringBuilder(用于构建字符串)
StringBuilder键=新的StringBuilder(9);
while(key.length()<9)
key.append(keyset.charAt(rnd.nextInt(keyset.length()-1));
return key.toString();
一种更快、更简单的方法是使用StringBuilder(用于构建字符串)
StringBuilder键=新的StringBuilder(9);
while(key.length()<9)
key.append(keyset.charAt(rnd.nextInt(keyset.length()-1));
return key.toString();
唯一的问题是它是一个服务器应用程序,我希望它尽可能快,在某些情况下使用对象只会降低程序的速度,但我同意这是正确的答案。上面的代码使用的对象远远少于您的示例。您可以回收StringBuilder并返回它,而不是字符串副本。这uld意味着每次都不创建对象。唯一的问题是,它是一个服务器应用程序,我希望它尽可能快,在某些情况下使用对象只会减慢程序的速度,但我同意这是正确的答案。上面的代码使用的对象远少于示例中的对象。您可以回收StringBuilder并返回它而不是字符串副本。这意味着每次都不会创建对象。