для цикла
for (int first = 0; first < deck.length; first++)
прокладывает все карты в колоде. Это в основном говорит
Для каждой из карт в колоде ... делать некоторые вещи
И «некоторые вещи» код, который находится внутри для цикла:
// select a random number between 0 and 51
int second = randomNumbers.nextInt(NUMBER_OF_CARDS);
// swap current Card with randomly selected Card
Card temp = deck[first];
deck[first] = deck[second];
deck[second] = temp;
Это первый выбирает случайное число от 0 до 51.
int second = randomNumbers.nextInt(NUMBER_OF_CARDS);
«Почему вы хотите сделать это?» Ты спрашивал. «Перетасовка» колода просто поменяв расположение карт в колоде, как
5 алмазов идет на вершину, 3 клубов идет куда-то в середине, король пик идет на 23-м месте. ..
Так что для каждой карты программа «свопирует» ее с картой в случайном месте в колоде. Вот почему он выбирает случайное число от 0 до 51.
Допустим, что случайное число 25. Затем поменять первую карту с одним с индексом 25 массива палубного:
Card temp = deck[first];
deck[first] = deck[second];
deck[second] = temp;
Если вы не понимаете, как работает подкачка. Я могу объяснить.
В Java, вы не можете просто поменять вещи, помещая материал в переменной B в переменной А и материал в A в B:
// This code doesn't swap a and b
int a = 10;
int b = 20;
a = b;
b = a;
Вы должны сначала поместить вещи в где-нибудь,
Card temp = deck[first];
Затем переместите вещи в в к А,
deck[first] = deck[second];
Наконец, подобрать материал, который был в A из этого «где-то» и положить его в B:
deck[second] = temp;
Фу! Это было много шагов!
Пожалуйста, разместите код вместо использования изображений. – apicellaj
Это просто базовый обмен значениями – Ramanlfc
Замечания в коде объясняют, что каждая строка делает хорошо. Пройдя через каждую карточку в колоде, она меняет карту на другую с помощью случайного числа. –