应该返回9个字符随机字符串的Java函数

时间:2012-02-26 18:46:36

标签: java string random

这个功能非常简单,我无法弄清楚出了什么问题。

 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;
}

它最终会返回一个空字符串。

3 个答案:

答案 0 :(得分:3)

concat返回一个新字符串,它不能修改原始字符串,它们是不可变的,我建议使用StringBuilder

答案 1 :(得分:2)

String是不可变对象,因此您需要执行

key = key.concat(String.valueOf(keyset.charAt(rnd.nextInt(keyset.length() - 1))));

答案 2 :(得分:1)

更快更简单的方法是使用StringBuilder(用于构建字符串)

StringBuilder key = new StringBuilder(9);
while(key.length() < 9)
    key.append(keyset.charAt(rnd.nextInt(keyset.length() - 1)));
return key.toString();