Przepisuję trałowie dla praktyki i napisałem ten fragment kodu, aby uniknąć błędów IndexOutOfBounds. Czy istnieje sposób na uniknięcie tego, więc nie muszę jednoznacznie wypisywać instrukcji if, co jest możliwym błędem? Pomyślałem o zwiększeniu każdego z indeksów w tablicy 2 i po prostu zignorowaniu pierwszego i ostatniego indeksu. Czy brakuje mi czegoś oczywistego?Czy istnieje sposób na uniknięcie tego bloku kodu?
if (row > 0 && col > 0)
ray[row - 1][col - 1] += 1;
if (row > 0)
ray[row - 1][col] += 1;
if (row > 0 && col < height - 1)
ray[row - 1][col + 1] += 1;
if (col > 0)
ray[row][col - 1] += 1;
if (col < height - 1)
ray[row][col + 1] += 1;
if (row < width - 1 && col > 0)
ray[row + 1][col - 1] += 1;
if (row < width - 1)
ray[row + 1][col] += 1;
if (row < width - 1 && col < height - 1)
ray[row + 1][col + 1] += 1;
Coś wydaje się trochę nie tak. Dlaczego chcesz zacząć od 2, jeśli 'row = 3'? – Makoto
fajne. również użycie min/max będzie bardziej przejrzyste 'startRow = max (0, wiersz-1)' – ZhongYu
@Makoto Kod w pytaniu obchodzi wszystkich sąsiadów 'ray [row] [col]. Więc jeśli 'row = 3', chcemy sprawdzić wszystkie komórki od wiersza 2 do wiersza 4, jeśli istnieją. –