我想做一个正方形,里面有一个空的空间,比如门,我怎么能改进这个?

问题描述 投票:0回答:1

我怎样才能改进这段代码?我想打印一个星号正方形,中间有一个空白空间,就像一扇门:)

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();
        }
    }
}

我想做一个正方形,里面有一个空的空间,比如门

java if-statement switch-statement
1个回答
0
投票

你可以试试这个:

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 个位置。

对中间方块使用嵌套循环:

您可以使用嵌套循环来迭代它们,而不是对中间方块内的位置进行硬编码。

© www.soinside.com 2019 - 2024. All rights reserved.