#java
#java
Вопрос:
Я новичок в Java, поэтому я еще не совсем понимаю это, я просто хочу знать, как работает этот код и как увеличивается количество. Почему существует цикл внутри цикла?
(Это не мой собственный код, это то, что я изучаю.)
Random r = new Random();
for (int i = 0; i < 5; i )
{
for (int j = 0; j < 5; j ) {
int n = r.nextInt(3);
Gridbox[i][j] = n;
if (n == 0)
{
count ;
}
}
Комментарии:
1. В соглашениях об именовании Java методы и переменные начинаются со строчной буквы (gridBox).
Ответ №1:
r.nextInt(3)
в результате получается однородное случайное число от 0 (включительно) до 3 (исключительное). Почему? Потому что так сказано в документах; javadoc — отличное место для начала, когда пытаешься выяснить, что делают вещи.
Другими словами, в 33% случаев, когда возвращается 0, в 33% случаев, когда возвращается 1, и в 33% случаев, когда возвращается 2, определяется случайным образом.
Другими словами, в 33% случаев (в среднем) n будет равно 0, и количество будет увеличиваться.
Весь этот код выполняет цикл 5 раз (сначала ‘for’), и за каждый внешний цикл повторяется цикл 5 раз (в общей сложности 5 * 5 = 25 раз генерируется случайное число).
Gridbox — это своего рода массив размером 5 на 5; случайно сгенерированное число помещается в эту сетку, и количество увеличивается в 33% случаев.
Ответ №2:
Здесь количество увеличивается на единицу при каждом выполнении этой строки:
count ;
Посмотрите на оператор увеличения
, чтобы понять.
Существует цикл внутри цикла, так называемая пара вложенных циклов, для того, чтобы охватить все возможные комбинации возможных i
s и j
s, т.е. охватить весь диапазон 2D.
Если вы хотите выучить язык программирования, я рекомендую сначала прочитать книгу и, возможно, следовать руководствам. Чтение существующего кода отложено на потом, хотя и неплохая идея.
Ответ №3:
Я добавил комментарий к каждой строке кода; и попытался объяснить здесь.
Вы создаете файл gridbox
размера i x j. В вашем случае вы жестко кодируете i и j до размера 5 (используя циклы for, оба размером по 5)
r.nextInt(3)
в результате получается однородное случайное число от 0 (включительно) до 3 (исключительное). Итак, вы присваиваете каждому значению внутри сетки случайное значение от 0 до 3.
Всякий раз, когда вы выполняете присваивание, если значение равно 0, увеличивайте количество.
//random class that allows generation of random values
Random r = new Random();
//for loop of size 5, start at 0 and go through it 5 times. **i** is the first param of gridbox
for (int i = 0; i < 5; i )
{
//for loop of size 5, start at 0 and go through it 5 times. **j** is the second param of Gridbox
for (int j = 0; j < 5; j ) {
// assign random integer value between 0 and 3 to field n.
int n = r.nextInt(3);
// push n into GridBox. this might be a typo. In java Capital indicates its a class not a instance of the class
Gridbox[i][j] = n;
// if **n is equal 0 increment count.
if (n == 0)
{
count ;
}
}
Я полагаю, вам нужно создать экземпляр
//this needs to be properly instantiated, to right size.
Gridbox gridbox = new Gridbox();
gridbox[i][j] = n