使用循环打印空方块

时间:2014-11-09 10:51:16

标签: java loops

我需要打印一个空方格,我的代码打印出来,我不知道为什么。

        ******
        *    *
        *    *
        *    *
        *    *
        ******

你能解释为什么它是一个矩形而不是一个正方形,我该如何解决它?

这是我的代码:

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int m = 6;
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= m; j++) {
                if (i == 1 || i == m)
                    System.out.print("*");
                else if (j == 1 || j == m)
                    System.out.print("*");
                else
                    System.out.print(" ");
            }
            System.out.println();
        }
    }

4 个答案:

答案 0 :(得分:3)

它是一个正方形(6行和6列)。显示器中的列比行窄。

,这不是您的错

答案 1 :(得分:2)

您正在将字符打印到文本控制台。因此,如果您打印6 X 6形状,并且每个字符例如是5 mm X 10 mm,则屏幕上将获得30 mm X 60 mm形状。

您无法从Java程序中真正控制它。很难找到文本控制台当前的字符长宽比(用户可以随后改变字体),也无法改变字体(使用Java或与平台无关的方式) )。

幸运的是,所有现代PC显示器都有几乎正方形的像素。因此,请选择具有相同宽度和高度的光栅字体。例如,在Windows cmd.exe 中,其“属性”对话框的下方图像(从左上角访问)演示了一种可能性:

cmd.exe font selection dialog


如果你想要更大的字体,那么你可以选择10x20字体(宽度是身高的一半),并在每个*后打印额外的空格。

或者你可以选择16x8字体(宽度是高度的两倍),然后在每一行之间打印额外的空行。

否则,你无法在文本模式下真正做到这一点,别名问题会使非整数宽高比看起来非常难看。只有这样才能做到这一点&#34;正确&#34;是做自己的&#34;文本控制台&#34;作为图形窗口,您可以在其中进行文本绘制,以便字符位置与字体大小无关。

答案 2 :(得分:1)

你应该在*之后在品脱声明中给出一个空格。

以下代码可行。

public class Test
{
public static void main(String[] args) {

        // TODO Auto-generated method stub
        int m = 6;
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= m; j++) {
                if (i == 1 || i == m)
                    System.out.print("* ");
                else if (j == 1 || j == m)
                    System.out.print("* ");
                else
                    System.out.print("  ");
            }
            System.out.println();
        }
    }
}

答案 3 :(得分:0)

可以通过在else节中留出额外的空间来获得所需的形状。

public static void main(String[] args) {
        // TODO Auto-generated method stub

        int m = 6;
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= m; j++) {
                if (i == 1 || i == m)
                    System.out.print(" *");
               else if (j == 1 || j == m)
                    System.out.print(" *");
              else
                    System.out.print("  ");
            }
            System.out.println();
        }
    }

结果

enter image description here