使用嵌套的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/