输入矩阵的 宽 长,中间用空格隔开;
输入矩阵,*号表示有雷,?表示没有;
在原矩阵的基础上,把问号改为数字,数值为八个方向的地雷数;
注意的点:
(1)第一行输入,用字符串接收,通过split分割空格,通过Integer的parseInt转为数字;
(2)输出字符串数组,用 “” 初始化,避免输出null;
(3)输出字符串output每次添加字符串时都需要是+=,比如添加*,添加数字;
import java.util.Arrays;
import java.util.Scanner;
public class Code02_MineClearance {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String[] matrixSize = scan.nextLine().split(" ");
int width = Integer.parseInt(matrixSize[0]);
int length = Integer.parseInt(matrixSize[1]);
String[] matrix = new String[width];
for (int i = 0; i < width; i++) {
matrix[i] = scan.next();
}
char[][] chars = new char[width][];
for (int i = 0; i < matrix.length; i++) {
chars[i] = matrix[i].toCharArray();
}
String[] output = new String[width];
Arrays.fill(output, "");
for (int i = 0; i < chars.length; i++) {
for (int j = 0; j < chars[i].length; j++) {
int curValue = 0;
if (chars[i][j] == '*') {
output[i] += String.valueOf('*');
continue;
}
if (i - 1 >= 0 && chars[i - 1][j] == '*') {
curValue++;
}
if (i + 1 < width && chars[i + 1][j] == '*') {
curValue++;
}
if (j - 1 >= 0 && chars[i][j - 1] == '*') {
curValue++;
}
if (j + 1 < length && chars[i][j + 1] == '*') {
curValue++;
}
if (i - 1 >= 0 && j + 1 < length && chars[i - 1][j + 1] == '*') {
curValue++;
}
if (i - 1 >= 0 && j - 1 >= 0 && chars[i - 1][j - 1] == '*') {
curValue++;
}
if (i + 1 < width && j + 1 < length && chars[i + 1][j + 1] == '*') {
curValue++;
}
if (i + 1 < width && j - 1 >= 0 && chars[i + 1][j - 1] == '*') {
curValue++;
}
output[i] += String.valueOf(curValue);
}
}
for (String s : output) {
System.out.println(s);
}
}
}