将 4 个 for 循环变成一个

Turning 4 for-loops into one

我想知道我是否可以获得一些帮助或提示来使这个 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]); 

类似于:

    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]); 但无论如何看起来都是假的。

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

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]);
}

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