Java-функция, которая должна возвращать случайную строку из 9 символов - PullRequest
0 голосов
/ 26 февраля 2012

Функция действительно проста, я просто не могу понять, в чем дело.

 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 ]

3 голосов
/ 26 февраля 2012

concat возвращает новую строку, она не может изменить исходную строку, они неизменны, я предлагаю использовать StringBuilder

2 голосов
/ 26 февраля 2012

Строка является неизменным объектом, поэтому вам нужно сделать

key = key.concat(String.valueOf(keyset.charAt(rnd.nextInt(keyset.length() - 1))));
1 голос
/ 27 февраля 2012

Более быстрый и простой способ - использовать StringBuilder (используется для построения строк)

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