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来获取其中的字符。
第二个问题就是边界问题,我选择建立一个大一些的数组,来防止越界