【问题标题】:Reducing a nested for loop to a single for loop将嵌套的 for 循环减少为单个 for 循环
【发布时间】:2016-02-21 06:47:35
【问题描述】:

我正在为我的一门课做一些家庭作业,但遇到了一个问题。我不太清楚我会怎么做。如果有人能指出我将如何去做的正确方向,那就太好了。这是问题。

嵌套循环

for (int i = 1; i <= height; i++)
{
    for (int j = 1; j <= width; j++) { System.out.print("*"); }
        System.out.println();
}

显示一个给定宽度和高度的矩形,例如

**** **** ****

编写一个显示相同矩形的 for 循环。

【问题讨论】:

  • 应用公式。使用 for 循环生成 N 个矩形。并使用一些逻辑计算高度和宽度。逻辑可以是任何算术或随机的。希望你会根据这个建议自己做功课。 :)

标签: java for-loop nested


【解决方案1】:
for(int i=1; i<=height*width; i++) {
    System.out.print("*");
    if(i%width==0){
        System.out.println();
    }
}

【讨论】:

  • 正是我要发布的内容,减去一半的空白。
【解决方案2】:

您可以将循环拆分为两个未嵌套的循环。第一眼定义了为每一行打印的字符串:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < width; i++) {
  sb.append("*");
}
String line = sb.toString();

现在您可以将 line 用于所有行:

for (int i = 0; i < height; i++) {
    System.out.println(line);
}

也请注意,此迭代从索引 0 开始,最后一个索引与 widthheight 不同,这在这里没有什么区别,但这是一种很好的做法,因为 Java 中几乎所有内容都使用基于 0 的索引。

虽然这个解决方案并没有像@KenBekov 那样真正使用单个 for 循环,但我发现这样做更具可读性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2020-01-14
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    相关资源
    最近更新 更多