RockBearLTD
@RockBearLTD
Ленивый недопрограммист.

Как соотнести элемент из одного массива к элементу другого массива?

Имеется несколько фраз. При нажатии на кнопку изначально генерировал случайное число в заданном диапазоне, равному количеству фраз, и присваивал каждому числу свой текст. Но мне надо без повторов. Обрыл гугл, многие решения с SO генерировать случайные числа без повторов мне не помогли, без должного опыта я не управился с ними.

В итоге, мне понравился больше такой вариант, на примере JavaScript, и создал массив типа String со своими фразами.
Стал использовать код из примера на одном сайте:
// Implementing Fisher–Yates shuffle
static void shuffleArray(int[] ar) {
	Random rnd = new Random();
	for (int i = ar.length - 1; i > 0; i--) {
		int index = rnd.nextInt(i + 1);
		// Simple swap
		int a = ar[index];
		ar[index] = ar[i];
		ar[i] = a;
	}
}

// создадим массив и перемешаем его
int[] mSolutionArray = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
		13, 14 };
shuffleArray(mSolutionArray);

Log.i("Array", Arrays.toString(mSolutionArray));


Перемешивает лишь массив типа int.
Первое, что пришло в голову - глупая (от правды не отказываются) идея сделать второй массив int, перемешивать его.
Сделал вот такую канитель:
int mSolutionArray[] = { 0, 1, 2, 3 };

    String rnd[] = {
             getResources().getString(R.string.random0),
             getResources().getString(R.string.random1),
             getResources().getString(R.string.random2),
             getResources().getString(R.string.random3),
    };

Но теперь не знаю, как я могу присвоить, к примеру, числу "1" из массива int - строку random1 из второго массива. И стоит ли вообще это делать? Насколько это глупо?
Или можно как-то перемешать и массив типа String?
Быть может, предложите что-то получше?
  • Вопрос задан
  • 941 просмотр
Решения вопроса 1
abs0lut
@abs0lut
Перемешивает лишь массив типа int.


Изменив тип пары переменных, можно и String[] перемешать. Ну или дженерики используйте.

static void shuffleArray(String[] ar) {
  		Random rnd = new Random();
  		for (int i = ar.length - 1; i > 0; i--) {
    		int index = rnd.nextInt(i + 1);
    		// Simple swap
    		String a = ar[index];
    		ar[index] = ar[i];
    		ar[i] = a;
  		}
}


Быть может, предложите что-то получше?

Честно говоря, так и не понял, в чем цель.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы