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

10-10 11:42