Есть ли возможность написать генератор случайных букв так же коротко, как в python? - PullRequest
1 голос
/ 09 июня 2019

Итак, я хочу сократить свой код, и я спросил себя, есть ли вероятность, что генератор случайных букв в Java такой же короткий, как и в python. В питоне это всего лишь один лайнер.

Следующий код - мой код:

int random = (int) Math.random()*25;

String[] letters ={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}; 

String letter = letters[random]; 

Ответы [ 3 ]

4 голосов
/ 09 июня 2019

Если «короткий» означает только одну строку, то любой из них будет делать:

char letter = "abcdefghijklmnopqrstuvwxyz".charAt((int) (Math.random() * 26));

char letter = (char) ThreadLocalRandom.current().nextInt('a', 'z'+1);

char letter = (char) ('a' + Math.random() * 26);
1 голос
/ 09 июня 2019

Используйте таблицу ASCII. 97 = 'a', просто добавьте к нему случайное число и конвертируйте в char.

ASCII Таблица

public class MyClass {
    public static void main(String args[]) {
        char z = (char)(97 + Math.random()*26);
        System.out.println("z = " + z);
    }
}
0 голосов
/ 09 июня 2019

Это самая короткая версия для создания 100 символов:

Character[] result = new Random().ints(100,'a','z'+1).mapToObj(ch -> (char)ch).toArray(Character[]::new);
...