使用嵌套的 for 循环语句绘制“*”的空心框。这些框具有相同的行数和列数,该数字应由用户输入(有效范围:5 到 21)。我很难想出一种让盒子变成空心的方法。这就是我的代码,它是一个完整的正方形,但我需要它是空心的或只是边框。
System.out.println("How many rows/columns(5-21)?");
rows=input.nextInt();
while(rows<5||rows>21){
System.out.println("Out of range. Reenter: ");
rows=input.nextInt();
}
for(m=1;m<=rows;m++){
for(c=1;c<=rows;c++){
System.out.print("*");
}
System.out.println();
}
输出应如下所示: 有多少行/列(5-21)? 25 超出范围。重新输入:7
*******
* *
* *
* *
* *
* *
*******
最佳答案
您只需要打印一些*
,因此在print("*")
之前添加一个测试。一种选择是显式测试四个条件(上、下、左、右)并将它们逻辑或在一起:
if( (m==1) || //top
(m==rows) || //bottom
(c==1) || //left
(c==rows) //right
) {
System.out.print("*");
} else {
System.out.print(" ");
}
每个 m==
测试或 c==
测试都标识一个正方形。自从四次测试之后
如果四个测试中的任何一个为 true,则 if() 为 true(并打印 *)。如果它们都不为真,则 else
运行并打印一个空格。
我还建议将 m
重命名为 rowIndex
,将 c
重命名为 colIndex
等。当您一两周后返回代码时,更具描述性的名称将使您更容易从上次停下的地方继续。 (问我怎么知道!)
关于java - 如何使用两个for循环制作空心盒子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19393842/