java - 如何使用两个for循环制作空心盒子

标签 java for-loop

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

相关文章:

java - 搜索文件 - Java - 需要升级

java - Eclipse Mac OS X 调试错误 : "FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)"

java - 编写斐波那契数列的方法

json - 用 "For Loop"填充矩阵花费的时间太长

JavaScript 数组 ab=ba

java - 如何在Qt中使用JNI创建字符串数组

Java在线程中解析和更新xml值

c# - 如何在 C# 中生成具有各种大小的单元格的随机洪水填充

linux - Bash : syntax error operand expected “=” , in assignment statement in a for loop

c++ - 在 `unsigned char` 循环中遍历 `for` 的整个范围