loop- for:java的问题

时间:2011-02-23 21:48:03

标签: java swing loops for-loop

我正在尝试将此代码更改为for循环,但我遇到了一些问题

panel[1].setBackground(Color.red);
            panel[2].setBackground(Color.white);
            panel[3].setBackground(Color.red);
            panel[4].setBackground(Color.white);
            panel[5].setBackground(Color.red);
            panel[6].setBackground(Color.white);
            panel[7].setBackground(Color.red);
            panel[8].setBackground(Color.white);
            panel[9].setBackground(Color.red);
            panel[10].setBackground(Color.white);

新代码 - 用于

for (int i = 0; i < panel.length; i++) {
                panel[(i*2)+1].setBackground(Color.red);//i think that is correct, or no?
                panel[(i*3)+1].setBackground(Color.white); //problem here
            }

感谢

5 个答案:

答案 0 :(得分:8)

使用新式for循环:

int ct = 0;
for(JPanel panel : panels){
   panel.setBackground((ct % 2 == 1) ? Color.Red : Color.White);
   ct++;
}

答案 1 :(得分:3)

for(int i = 1; i<panel.length; i++)
{
    if(i%2 == 0)
    {
        panel[i].setBackground(Color.white);
    }
    else
    {
        panel[i].setBackground(Color.red);
    }
}

答案 2 :(得分:3)

<强>解决方案

for (int i = 1; i < panel.length; i++)
{
    if ( i % 2 == 0 ) { panel[i].setBackground(Color.white); }
    else { panel[i].setBackground(Color.red); }   
}

使用三元运算符的更简洁的表达式:

for (int i = 1; i < panel.length; i++)
{
     panel[i].setBackground( i % 2 == 0 ? Color.white : Color.red );  
}

<强>释

%是模运算符i % 2 == 0i为偶数,!= 0为奇数。

<强>注意事项

在您的示例中引用的面板数组从1开始,Java中的数组从ZERO开始,如果您在(第一个)ZERO数组元素中有任何内容,则可能会出现一个错误的错误。

使用类型安全List类总是比直接使用数组更好,您不必通过不使用第一个数组插槽来处理您正在创建的一次性错误问题。

答案 3 :(得分:3)

我会:

Color current = Color.white; 
for( Panel p : panels ) { 
   p.setBackground( current );
   current =  ( current == Color.white ? Color.red : Color.white );
}

答案 4 :(得分:-1)

for (int i = 1; i < length; i+=2)
{
    panel[i].setBackground(red);
    panel[i+1].setBackground(white);
}