Джава. Почему это не для цикла работает правильно - PullRequest
1 голос
/ 15 марта 2012

У меня есть следующее для заголовка цикла:

for ( int row = interval[intRow][_START_]; row <= interval[intRow][_END_]; row++ )

, где interval имеет тип / размерность int[15][5], intRow имеет значение 1, а _START_ и _END_ являются константами, начиная с 0 и заканчивая 1;

interval[intRow][_START_] возвращает 1, а interval[intRow][_END_] возвращает 2

Почему, черт возьми, row идет только до 1 (так что один цикл вместо 2)?

Я заметил, что если я помещаю второе условие, или как оно там называется, между двумя ( ... ), тогда оно работает, оно делает цикл дважды. Что я имею в виду:

for ( int row = interval[intRow][_START_]; row <= (interval[intRow][_END_]); row++ )

У кого-нибудь есть идеи, почему это происходит? Я знаю, что могу просто поставить их между двумя скобками, но я хотел бы знать, почему это не работает.

Спасибо.

EDIT1

Это <=, а не < ... Я сделал опечатку в начале. К сожалению.

EDIT2

В основном это будет выглядеть так:

for ( int row = interval[1][0]; row <= interval[1][1]; row++ )

, где interval[1][0] == 1 и interval[1][1] == 2

Ответы [ 3 ]

3 голосов
/ 15 марта 2012

Цикл 1: 1 <2 - ОК Цикл2: 2 <2 - не в порядке </p>

Попробуйте <= </p>

1 голос
/ 15 марта 2012

Попробовал следующее.

int[][] interval = new int [15][5];

int intRow = 1;
int _START_ = 0;
int _END_ = 1;

interval[intRow][_START_] = 1;
interval[intRow][_END_] = 2;

for ( int row = interval[intRow][_START_]; row <= interval[intRow][_END_]; row++ ) {

    System.out.println(row);
}

Вывод: 1 2

Подводя итог, у меня все работает нормально.Что заставляет меня задуматься, правильно ли установлен интервал [intRow] [_ END _] .

Попробуйте использовать отладчик или просто Sysouts для отладки вашей программы.

0 голосов
/ 15 марта 2012

Вы пытались написать это?

for ( int row = interval[intRow][_START_]; row <= interval[intRow][_END_]; row++ )

или это?

for ( int row = interval[intRow][_START_]; row < interval[intRow][_END_] +1; row++ )
...