簡體   English   中英

我可以簡化這個for循環嗎?

[英]Can I simplify this for loop?

以下代碼段來自於生成5 x 5網格的JButton的系統。 我需要遍歷一個ArrayListJButtons與行和列通過JButtonButtonListener的構造。 當前在下面顯示代碼的方式有效,但是我想知道是否可以清理代碼或以任何方式重構。 我似乎有很多有關嘗試構建網格的說明。

    int row = 1, col = 1;
    for (JButton curButton : view.getButtons()) {

        curButton.addActionListener(new ButtonListener(row, col));
        row++;

        if (row > 5) {
            row = 1;
            col++;
        }           
    }

有什么辦法可以提高質量或簡化上面的代碼段?

int iterator = 0;
for (JButton curButton : view.getButtons()) {

    curButton.addActionListener(new ButtonListener(iterator%5 + 1, iterator/5 + 1));

    iterator++; 
}

注意這里我使用整數除法,該除法總是四舍五入。 iterator/5 + 1將映射{0,1,2,3,4,5,6,...}到{1,1,1,1,1,2,2 ...}

你不能有:

col = row = 5;
for (int i = 0; i < col; i++) {
    for (int j = 0; j < row; j++) {
         curButton.addActionListener(new ButtonListener(i, j));
    }
}

可能必須使col和row 6或使i和j從另一個數字開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM