题解 | 扫雷
扫雷
https://www.nowcoder.com/practice/d5f277427d9a4cd3ae60ea6c276dddfd
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case int n = in.nextInt(); int m = in.nextInt(); in.nextLine(); // 消耗换行符 //定义个大一圈的数组 char[][] arr = new char[n + 2][m + 2]; //先把一圈 .装进去 for (int i = 0; i < n + 2; i++) { for (int j = 0; j < m + 2; j++) { if (i == 0 || j == 0 || i == n+1 || j == m+1) { arr[i][j] = '.'; } } } //再赋值内圈 for (int i = 1; i < n + 1; i++) { String str = in.nextLine(); char[] ch = str.toCharArray(); for (int j = 1; j < m + 1; j++) { arr[i][j]=ch[j-1]; } } //定义arr1装结果 char[][] arr1 = arr; //遍历内圈 for (int i = 1; i < n+1; i++) { for (int j = 1; j < m+1; j++) { int res = 0; if (arr[i][j] != '*') { for (int k = i - 1; k <= i + 1; k++) { for (int l = j - 1; l <= j + 1; l++) { if ("*".equals(String.valueOf(arr[k][l]))) { res++; } } } arr1[i][j] =(char)(res + '0'); } } } //输出结果arr1 for (int i = 1; i < n+1; i++) { for (int j = 1; j < m+1; j++) { System.out.print(arr1[i][j]); } System.out.println(); } } } }