2016-11-11 12 views
0

Итак, я создаю программу, которая выводит 3 случайные буквы от A до E. Проблема заключается в том, что она также должна содержать строчные буквы A-E (A, a, B, b, C, c, D, d, E, e)Java Random Class, который выводит буквы (от A до E)

Это то, что я использовал для распечатки случайной буквы.

letterValue = (char) (rand.nextInt(5) + 'A'); 
System.out.print(letterValue); 

Переменная 'letterValue' должна печатать от A до E, как в верхнем, так и в нижнем регистре.

+4

'(char) (rand.nextInt (5) + rand.nextBoolean()? 'A': 'a');' – flakes

+0

Должны ли буквы быть разными? Будет ли A, b, A допустимым выходом? Будет ли A, b, a? –

+0

Это не работает @flakes. – Majestic

ответ

1

Один очень элегантный способ сделать это: просто используйте массив со значениями, которые вы намереваетесь «случайным»; и затем перетасовать этот массив. И когда вы обращаетесь к классу Javas List, вы можете использовать встроенный в shuffle метод:

, как:

List<Character> values = Arrays.asList('A', 'a', ...); 
Collections.shuffle(values); 

Если вы настаиваете на использовании массива полукокса вместо этого List<Character> ... вы можете по-прежнему используйте вышеуказанный подход, так как вы можете легко преобразовать этот список в такой массив (см., например, here).

Когда вы не используете массив, вы можете «перевернуть другую монету»; значение: просто получите другое случайное значение, возможно 0 или 1. С 0; просто сохраните заглавное значение; для 1, просто используйте соответствующее строчное значение.

(и вы знаете, что вы можете получить от «A» до «а» с помощью «математикой», тоже - похожа на то, что вы уже делаете здесь)

+0

Как мне это сделать без массивов? – Majestic

+0

Я обновил свой ответ. надеюсь, это поможет – GhostCat

0
 letterValue = (char) (rand.nextInt(5) + 'A'); 
     if (rand.nextBoolean()) { 
      letterValue = Character.toLowerCase(letterValue); 
     } 
     System.out.print(letterValue); 

Это только один выход из многих , Я использую свой собственный код и стараюсь не усложнять задачу больше, чем необходимо. Я запускал это три раза, так как вы хотели получить 3 случайных буквы, и он напечатал d, d и C.

 Смежные вопросы

  • Нет связанных вопросов^_^