我需要打印一个空方格,我的代码打印出来,我不知道为什么。
******
* *
* *
* *
* *
******
你能解释为什么它是一个矩形而不是一个正方形,我该如何解决它?
这是我的代码:
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();
}
}
答案 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 中,其“属性”对话框的下方图像(从左上角访问)演示了一种可能性:
如果你想要更大的字体,那么你可以选择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();
}
}