主要原因是一个中文字符的打印宽度和一个空格字符的打印宽度不一致,大致比例是3个'墙'字符和4个空格字符的宽度相同,依照这一点,修改如下:
import java.util.Scanner;
public class CreateWall {
public static void main(String[] args) {
// TODO Auto-generated method stub
char map[][] = new char[18][32];
// Scanner sc = new Scanner(System.in);
int x = 1, y = 1;
boolean finish = false;// 判断游戏是否结束
// System.out.println("map.length="+map.length);
//System.out.println("墙 墙");
//System.out.println("墙墙墙墙墙");
//
for (int i = 0; i < map.length; i++) {
if (i == 0 || i == 17) {
for (int j = 0; j < map[i].length; j++) {
map[i][j] = '墙';
}
} else {//当不是第一行和最后一行的其他的行,第一列和最后一列为'墙'字符,其他列为空格
for(int j=0;j<map[i].length;j++) {
if(j==0||j==31) {
map[i][j] = '墙';
}else {
map[i][j]=' ';
}
}
}
}
for(int i=0;i<map.length;i++) {
for(int j=0;j<map[i].length;j++) {
if(map[i][j]!=' ') { //当不为空格,即为'墙'字符,则输出它
System.out.print(map[i][j]);
}else { //如果是空格,则每隔三个字符输出四个空格,以对齐三个中文字符
if(j%2==0) //在cmd下改为 j%2==0 ,在eclipse里面改为j%3==0
System.out.print(" ");
}
}
System.out.println();
}
}
}