Выбрать случайную переменную Java? Это возможно - PullRequest
0 голосов
/ 27 февраля 2012

Допустим, у меня есть следующие настройки:

private String one = "abc";
private String two = "def";
private String three = "ghi";

и т. Д.

Я хочу написать метод, который возвращает случайную переменную, одну из многих, которые я объявилна вершине класса.Есть ли простой способ сделать это?

Ответы [ 7 ]

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

Два варианта:

  1. (более сложно) использовать отражение, чтобы получить переменные в классе, и выбрать один случайный случай.
  2. (проще) поместите их в массив и выберите случайный индекс.
1 голос
/ 27 февраля 2012

А как насчет этого простого метода? Или сделайте это с Collection, если у вас слишком много элементов.

public String getRandomString(){
        Random r = new Random();

        int i = r.nextInt()%3;

        switch (i) {
            case 0:
                return one;
            case 1:
                return two;
            case 2:
                return three;
            default:
                break;
        }

    }
0 голосов
/ 27 марта 2017

Я думаю, что принятое решение может вернуть отрицательные значения

Документы Java nextInt ()

  • так что вы можете использовать Math.Abs()
  • или используйте r.nextInt(3)

Java-документы nextInt (n)

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

0 голосов
/ 27 февраля 2012

Поместите свои переменные в массив или список и используйте генератор случайных чисел, чтобы выбрать случайный элемент в этой коллекции.

0 голосов
/ 27 февраля 2012

Вы можете поместить их все в список, а затем выбрать случайное число от нуля до размера списка и выбрать этот элемент из списка.

0 голосов
/ 27 февраля 2012

Самый простой и удобный способ - использовать массив вместо переменных, затем получить случайное целое число и затем использовать индекс этого массива.

0 голосов
/ 27 февраля 2012

Вы можете поместить их в список и выбрать случайный элемент списка, получив доступ к элементу списка со случайным числом (вам, конечно, придется проверить, находится ли случайное число в пределах диапазона индекса списка).

Если вам нужен пример кода, прокомментируйте это; -)

Интересная функция, которая вам понадобится: math.random ()

...