我怎样才能改进这段代码?我想打印一个星号正方形,中间有一个空白空间,就像一扇门:)
public class Figure {
public static void main(String[] args) {
for(int i = 1; i <= 5; i++){
for(int j = 1; j <= 7; j++){
if(i == 3 && j == 3 || i == 3 && j == 4 || i == 3 && j == 5 ||
i == 4 && j == 3 || i == 4 && j == 4 || i == 4 && j == 5 ||
i == 5 && j == 3 || i == 5 && j == 4 || i == 5 && j == 5){
System.out.print(" ");
}else{
System.out.print("*");
}
}
System.out.println();
}
}
}
我想做一个正方形,里面有一个空的空间,比如门
你可以试试这个:
public class Figure {
private static final int WIDTH = 7;
private static final int HEIGHT = 5;
private static final int MIDDLE_ROW = 3;
private static final int MIDDLE_COL_START = 3;
public static void main(String[] args) {
for (int i = 1; i <= HEIGHT; i++) {
for (int j = 1; j <= WIDTH; j++) {
if (i >= MIDDLE_ROW - 1 && i <= MIDDLE_ROW + 1 &&
j >= MIDDLE_COL_START - 1 && j <= MIDDLE_COL_START + 1) {
System.out.print(" ");
} else {
System.out.print("*");
}
}
System.out.println();
}
}
}
提取幻数
代码中多次出现数字3、4、5、7,最好把它们提取成名字有意义的常量。例如,您可以定义 WIDTH = 7、HEIGHT = 5、MIDDLE_ROW = 3 和 MIDDLE_COL_START = 3。
简化if条件
您可以使用更简单的条件来检查当前位置是否在中间方块内,而不是测试中间的所有 9 个位置。
对中间方块使用嵌套循环:
您可以使用嵌套循环来迭代它们,而不是对中间方块内的位置进行硬编码。