【问题标题】:Turning 4 for-loops into one [closed]将4个for循环变成一个[关闭]
【发布时间】:2018-09-04 20:40:36
【问题描述】:

我想知道是否可以获得一些帮助或提示以使这个 for 循环更复杂。我试图将它们合二为一,而不是它有 3 个不同的循环。我似乎无法修复它,我已经尝试用谷歌搜索并自己修复它。如果你能看一下,我将非常感激。

//菜鸟程序员

    for(int i = 0; i < 4; i++) 
        row[1].add(button[i]);
    row[1].add(button[14]);
    add(row[1]);


    for(int i = 4; i < 8; i++)
        row[2].add(button[i]);
    row[2].add(button[15]);
    add(row[2]);

    for(int i = 8; i < 12; i++)
        row[3].add(button[i]);
    row[3].add(button[16]);
    add(row[3]);
    row[4].add(button[18]);

    for(int i = 12; i < 14; i++)
        row[4].add(button[i]);
    row[4].add(button[17]);
    add(row[4]); 

【问题讨论】:

  • 我投票结束这个问题,因为关于改进工作代码的问题属于codereview.stackexchange.com
  • @Andreas 这看起来像示例代码并且缺乏具体的上下文。这将在 Code Review 上偏离主题,并且会很快关闭。
  • @Andreas- 赞同 Zeta 的观点:在 CR 上推荐 OP 帖子是可以的,但在未来,请不要使用代码审查作为结束问题的理由。评估请求并使用太宽泛主要基于意见等原因。然后您可以向 OP 提及它可以在 Code Review 上发布(如果是) on-topic。请参阅this answer to A guide to Code Review for Stack Overflow users 中的你不应该做的事情部分

标签: java eclipse for-loop calculator


【解决方案1】:

假设顺序确实很重要,我认为您至少需要两个循环;比如,

row[4].add(button[18]);
for (int i = 0; i < 14; i++) {
    int ndx = 1 + (i / 4);
    row[ndx].add(button[i]);
}
for (int i = 1; i < 5; i++) {
    row[i].add(button[13 + i]);
    add(row[i]);
}

应该是等价的(所有按钮都以相同的顺序添加到一行并添加了所有行)。

【讨论】:

  • 成功了,非常感谢!
【解决方案2】:

类似:

    for (int r = 0; r < 4; r++) {
        for (int i = 4 * r; i < 4 * r + 4; i++)
            row[r + 1].add(button[i]);
        row[r + 1].add(button[r + 14]);
        add(row[r + 1]);
    }

显然这是缺少row[4].add(button[18]);,但无论如何看起来都是虚假的。

【讨论】:

  • 因为第四个循环只计算到 14,而不是 16,并且由于那个虚假的 button[18],问题只是要求合并前三个循环,而不是全部四个。反正这是我的猜测。
  • 每个 for 循环都适用于计算器上的每一行(我有 4 行)我发现我的问题是错误的,所以我编辑了那个。
猜你喜欢
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2022-11-19
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多