分配两个 5x5 数组 a 和 b,将数组 a 按上图所示赋初值。1.2.对于数组 a 中每一个元素 ali]i],从它的相邻元素中选取中间值填入 b[iji]。3.打印b 数组。
public class Arr {
static int[][] a = new int[5][5];
static int[][] arr = {{5,85,4,2,68},{78,82,75,41,14},{79,47,38,1,47},{1,2,14,65,13},{96,87,32,14,21}};
public static void main(String[] args) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0 ; j< arr[i].length;j++){
a[i][j] = getArr(i,j);
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
System.out.println("--------------");
for (int i = 0; i < a.length; i++) {
for (int j = 0 ; j< a[i].length;j++){
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
}
public static int getArr(int i, int j) {
ArrayList<Integer> list = new ArrayList();
boolean up = false;
boolean right = false;
boolean left = false;
boolean down = false;
if (i - 1 >= 0) {
list.add(arr[i-1][j]);
up = true;
}
if (i + 1 < arr.length) {
list.add(arr[i+1][j]);
down = true;
}
if (j - 1 >= 0) {
list.add(arr[i][j-1]);
left = true;
}
if (j + 1 < arr[i].length) {
list.add(arr[i][j+1]);
right = true;
}
if (up && left) {
list.add(arr[i - 1][j - 1]);
}
if (up && right) {
list.add(arr[i - 1][j + 1]);
}
if (down && left) {
list.add(arr[i + 1][j - 1]);
}
if (down && right) {
list.add(arr[i + 1][j + 1]);
}
Collections.sort(list);
int num = list.get((list.size())/2);
return num;
}