Попытка заставить мой цикл работы работать

-3

Поэтому на данный момент я понятия не имею, почему мой цикл for не работает. Вероятно, это небольшая ошибка, но я не могу найти ее, поэтому я буду благодарен за вашу помощь. Вот как это выглядит:

int[] values = new int[array1.length];
for (int i = 0; i < array1.length; i++) {
for (int x = 0; x >= array1[i][0] && x <= array1[i][2]; x++) {
for (int y = 0; y >= array1[i][1] && y <= array1[i][3]; y++) {
values[i] += array2[x][y];
}
}
}

Числа, которые я использую, чтобы проверить это и некоторый контекст:

Оба массива 2D, array1 выглядит так:

array1

(array1.length= 8) и array2 следующим образом:

array2

array1 содержит координаты левого и правого нижнего угла области в array2 поэтому 0 0 2 1 являются координатами для array2[0][0] и array2[2][1] и я пытаюсь получить мои for цикла, чтобы добавить все числа в области. Поэтому для этого примера он добавит эти четыре числа:

enter image description here

Мой выход: 3 0 0 0 0 0 0 0

спросил(а) 2016-01-09T22:23:00+03:00 3 года, 11 месяцев назад
2
2 ответа
48

Вы должны использовать явные имена переменных, чтобы не делать ошибок в значении. Кроме того, запустите свой цикл в ожидаемых координатах. Таким образом, ваша петля может быть написана так:

int[] values = new int[array1.length];
for (int i = 0; i < values.length; i++) {
int fromX = array1[i][0];
int fromY = array1[i][1];
int toX = array1[i][2];
int toY = array1[i][3];

for (int x = fromX; x <= toX; x++) {
for (int y = fromY; y <= toY; y++) {
values[i] += array2[x][y];
}
}
}

Вы можете проверить результат:

System.out.println( Arrays.toString( values) );
// Output is [3, 0, 4, -2, 0, 1, -2, 3]

ответил(а) 2016-01-10T11:06:00+03:00 3 года, 11 месяцев назад
43

Я думаю, вы должны это сделать (добавьте <= и> =) и измените значение statring. Также обратите внимание на заполнение "значений" нулями, так как вы суммируете его.

                for (int x = array1[i][0]; x >= array1[i][0] && x =< array1[i][2]; x++) {
for (int y = array1[i][1]; y >= array1[i][1] && y =< array1[i][3]; y++) {
values[i] += array2[x][y];
}
}

ответил(а) 2016-01-09T22:34:00+03:00 3 года, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема