import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
char a[][]=new char[n+5][m+5];
for (int i = 1; i <= n; i++) {
String string=scanner.next();
for (int j = 1; j <= m; j++) {
a[i][j]=string.charAt(j-1);
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if(a[i][j]=='*')System.out.print("*");
else {
int count=0;
for (int k = i-1; k <= i+1; k++) {
for (int l = j-1; l <= j+1; l++) {
if(k==i&&l==j)continue;
if(a[k][l]=='*')count++;
}
}
System.out.print(count);
}
}
System.out.println();
}
}
}
这题第一个问题就是如何把一行的字符输入数组中,我选择读取字符串,如何使用charAt来获取其中的字符。
第二个问题就是边界问题,我选择建立一个大一些的数组,来防止越界



京公网安备 11010502036488号