2017-02-11 4 views
-2

Хорошо ... Итак, я немного застрял с упражнением для школы, и я действительно не могу понять, как его решить. Я думаю, что я пришел по-настоящему по сравнению с тем, где я начал, и надеюсь, вы, ребята, могли бы помочь мне.Соседи в 2D 4x4 Array

Окончательный смысл упражнения состоял бы в том, что код выводит всех соседей, доступных для каждой отдельной цифры в массиве. Я сделал средний четвертый, они отлично работают. Внешние цифры - это боль для меня, я не могу найти способ сделать код «уведомлением» о том, что больше цифр нет, например, над цифрой в верхнем левом углу.

Мне кажется, что я знаю, как это сделать: с помощью оператора if, который не позволяет что-то произойти, если значение индекса массива выше 3 или ниже 0. Потому что это двумерный массив 4x4, который означает, что для оси X и оси Y имеются индексы 0, 1, 2, 3.

Я надеюсь, что кто-то здесь хочет помочь мне. Он будет очень благодарен! Вот мой код на данный момент!

Заранее спасибо

public class P620 { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    int[][] counts = 
     { 
      { 1, 0, 3, 4}, 
      { 3, 5, 6, 4 }, 
      { 9, 7, 1, 4}, 
      { 1, 1, 1, 1} 
     }; 

    for(int i = 0; i <= 3; i++) { 

     for(int j = 0; j <= 3; j++) { 

      System.out.println("Neighbours van de array: " + i + j + " met waarde: " + counts[i][j]); 

       if ((i < 4 && i > -1) && (j < 4 && j > -1)) { 

        System.out.println(counts[i - 1][j]); 
       } 

       else if ((i < 4 && i > -1) && (j < 4 && j > -1)) { 
        System.out.println(counts[i - 1][j - 1]); 
       } 

       else if ((i < 4 && i > -1) && (j < 4 && j > -1)) { 
        System.out.println(counts[i - 1][j + 1]); 
       } 

       else if ((i < 4 && i > -1) && (j < 4 && j > -1)) { 
        System.out.println(counts[i][j - 1]); 
       } 

       else if ((i < 4 && i > -1) && (j < 4 && j > -1)) { 
        System.out.println(counts[i + 1][j - 1]);   
       } 

       else if ((i < 4 && i > -1) && (j < 4 && j > -1)) { 
        System.out.println(counts[i + 1][j]); 
       } 

       else if ((i < 4 && i > -1) && (j < 4 && j > -1)) { 
        System.out.println(counts[i + 1][j + 1]); 
       } 

       else if ((i < 4 && i > -1) && (j < 4 && j > -1)) { 
        System.out.println(counts[i][j + 1]); 
       } 
       else { 

       } 

      } 
     } 
}  

}

+0

Я думаю, что вы хотите что-то вроде этого: 'если ((я - 1> -1 && я + 1 <4) && (j - 1> -1 && j + 1 <4)) ' –

+0

Ваш вопрос непонятен. Вам нужны прямые соседи или соседи по 2 квадратика? – user3437460

+0

Соседи вокруг каждой цифры. – Wout

ответ

0

Вот небольшой намек:

for (int i=0; i < 4; ++i) { 
    for (int j=0; j<4; ++j) { 
     System.out.println("Neighbours van de array: " + i + j + " met waarde: " + counts[i][j]); 

     // print upper-left (northwest) neighbor, if there is one 
     if (i >= 1 && j >= 1) 
      System.out.println(counts[i-1][j-1]); 
     // print upper (north) neighbor, if there is one 
     if (i >= 1) 
      System.out.println(counts[i-1][j]); 
       . 
       . 
       . 
     // print lower (south) neighbor, if there is one 
     if (i < 3) 
      System.out.println(counts[i+1][j]); 
     // print lower-right (southeast) neighbor, if there is one 
     if (i < 3 && j < 3) 
      System.out.println(counts[i+1][j+1]); 
    }  
} 
+0

Спасибо, я скоро займусь этим. – Wout