【问题标题】:Draw a fence in Java using for loops使用 for 循环在 Java 中绘制栅栏
【发布时间】:2026-01-09 09:20:07
【问题描述】:

我的任务是制作一个围栏绘图程序。到目前为止,我可以让用户输入值来设置高度和宽度,并使用嵌套的 for 循环,我可以让它将高度和宽度输出为“#”符号。问题是我需要它的边框为 # 和 |在中间。

目前一个 4 高 4 宽的栅栏看起来像这样

####     
####
####
####

我需要它看起来像这样

####
#||#
#||#
####


   public void draw() {
       for (i = 1; i < height-1; i++) {
           System.out.print("#");
           for (j = 1; j < width-1; j++) {
               System.out.print("|");
           }
           System.out.println("#");
       }
       fenceCount++;
   }

什么时候可以休息。我有一个循环询问用户是否要构建另一个围栏类型 y 或 n。在终止用户输入“n”的最后,有谁知道是否有比休息更好的方法来做到这一点? ?一次休息在这里“好吗”?我听说循环中的休息很草率。此外,我总觉得我必须扭转我对 while 循环的想法。

【问题讨论】:

  • 您能否添加一个围栏应该如何看待您的问题的示例(您可以将其放在&lt;pre&gt;&lt;/pre&gt; 标签中,使其看起来像在控制台上的样子) ?
  • @alfasin 他的代码在我的 Eclipse 上编译得相当好。
  • @Alex,你可以看看这个答案。这可能会有所帮助 - *.com/questions/29053675/…

标签: java for-loop nested-loops


【解决方案1】:

draw() 更改为:

public void draw() {
    String border = String.format("%0" + width +"d", 0).replace("0", "#");
    System.out.println(border); // top-border
    for (int i = 1; i < height-1; i++) {
        System.out.print("#"); 
        for (int j = 1; j < width-1; j++) {
            System.out.print("|");
        }
        System.out.println("#");
    }
    System.out.println(border); // bottom-border
}

【讨论】:

  • 啊,我用利息计算器遇到了这个问题,制作股票边框真是太棒了!我在获取 # 时遇到了麻烦,因为我过去曾在其他程序中制作表格,但它们是带有常用词或字符串的标题。字符串格式和替换是天才。谢谢!
【解决方案2】:

您的栅栏输出当前将完全用“#”填充
你说得对,顶行和底行只有'#'

对于剩余的行,对于第一列和最后一列中的条目,您需要一个 #,否则一个 |

这里有一些帮助:

for (i = 1; i <= height; i++)
   {
     if(first or last row)
     {
        for (j = 1; j <= width; j++)
        {
         print#
        }
     }
     else{
           for (j = 1; j <= width; j++)
           {
               if(j=1 or j=last column)
                   print '#'
               else
                   print '|'
           }
         }
      System.out.println();
   }

这会很好地建立你的栅栏:-)

【讨论】: