Что означает этот код? как увеличивается количество?

#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