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来获取其中的字符。

第二个问题就是边界问题,我选择建立一个大一些的数组,来防止越界