Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Двумерный массив


Автор: nextPointer 23.3.2009, 16:09
Здравствуйте! Я только начинаю учиться программировать на java. Есть цикл:
Код

int twoD[][] = new int [4][5];
int i, j, k = 0;

for (i = 0; i < 4; i++)
for (j = 0; j < 5; j++)
{
twoD[i][j] = k;
k++
}
 
Что означает строка twoD[i][j] = k; куда присваивается 0? Спасибо.

Автор: Samotnik 23.3.2009, 16:13
Цитата(nextPointer @  23.3.2009,  15:09 Найти цитируемый пост)
Что означает строка twoD[i][j] = k

в k записываются значения массива по одному элементу. 
k++  - это счетчик, считает, сколько значений в массиве.
Цитата(nextPointer @  23.3.2009,  15:09 Найти цитируемый пост)
куда присваивается 0?

никуда.  smile 
int k = 0; - это просто инициализация переменной. 

Автор: nextPointer 23.3.2009, 17:07
Цитата(Samotnik @ 23.3.2009,  14:13)
Цитата(nextPointer @  23.3.2009,  15:09 Найти цитируемый пост)
Что означает строка twoD[i][j] = k

в k записываются значения массива по одному элементу. 
k++  - это счетчик, считает, сколько значений в массиве.
Цитата(nextPointer @  23.3.2009,  15:09 Найти цитируемый пост)
куда присваивается 0?

никуда.  :smile 
int k = 0; - это просто инициализация переменной.

Немного не понимаю,  а для чего вообще эта переменная?
Код взят из книги Ноутон П. Шилдт Г. Java2. Наиболее полное руководство. 
Вот весь код: 
Код

class TwoDArray {
public static void main (String args[]) {
int twoD[][] = new int [4][5];
int i, j, k = 0;

for(i = 0; i < 4; i++)
for (j = 0; j = 5; j++) 
{
twoD[i][j] = k;
k++;
}

for(i = 0; i < 4; i++)
for (j = 0; j = 5; j++) 
{
System.out.print(twoD[i][j] + " ");
System.out.println() ;
}
}
}


Автор: Samotnik 23.3.2009, 17:21
Цитата(nextPointer @  23.3.2009,  16:07 Найти цитируемый пост)
Немного не понимаю,  а для чего вообще эта переменная?


Цитата(Samotnik @  23.3.2009,  15:13 Найти цитируемый пост)
это счетчик, считает, сколько значений в массиве.


Автор: nextPointer 23.3.2009, 17:32
Понял. Спасибо!  smile 

Автор: gosnis 24.3.2009, 13:38
Позволю себе не согласиться с утверждением Samotnik-а насчет "в k записываются значения массива по одному элементу" и насчет счетчика. Как то Samotnik прочитал этот код задом наперед. k инициализирует элементы массива. Счетчиком он является совершенно случайно. Если заменить k++; на, скажем, k = k + 2;, счетчиком он уже не будет. Пример из книги, насколько я понимаю, демонстрирует работу с двумерными массивами. Надо же было это как то показать. Вот они и заполнили сначала массив значениями от 0 и до (количество_элементов - 1), а потом распечатали их на экран.

Автор: Samotnik 24.3.2009, 14:51
gosnis,  OMG   smile  
что  я не так сказал ? 
в массив twoD записываются 0, 1, 2,3,4 ,5 ... 
благодаря тому, что k приплюсовывает к себе по 1 на каждой итерации 
Цитата(gosnis @  24.3.2009,  12:38 Найти цитируемый пост)
четчиком он является совершенно случайно

да, согласен, тут я не корректно выразился

Автор: gosnis 24.3.2009, 20:02
Цитата(Samotnik @  24.3.2009,  14:51 Найти цитируемый пост)
gosnis,  OMG     
что  я не так сказал ? 

После нескольких прочтений и перепрочтений твоего ответа, есть возможность, что ты имел в виду одно, а я понял его немного иначе. Ты главное не нервничай - нервные клетки не востанавливаются. smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)