好的,以下是一个Java代码示例,用于解决您描述的问题:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int n = scanner.nextInt();
int[][] arr = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
arr[i][j] = scanner.nextInt();
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
boolean isPeak = true;
for (int k = -1; k <= 1; k++) {
for (int l = -1; l <= 1; l++) {
if (i + k >= 0 && i + k < n && j + l >= 0 && j + l < n && arr[i][j] < arr[i + k][j + l]) {
isPeak = false;
break;
}
}
}
if (isPeak) {
System.out.print(arr[i][j] + " ");
}
}
System.out.println();
}
}
}
}
```
这段代码首先读取数组的大小N,然后读取N行N列的2D数组。接着,对于数组中的每个元素,它检查该元素是否大于其左上、上、右上、左、右、左下、下、右下的值。如果是,则将其打印出来。最后,每组输出之后加换行符。