2016-10-04 10 views
0

我一直在修改某些列的颜色,但没有正确的结果。我对它的大部分都有些困惑。Java:使用If-Else语句的着色网格列

我很感激任何帮助!

我正在试图完成:

使用一系列if - else语句,使第4列绿,列5蓝,6列红色,剩下的黄色。

我(不正确)代码:

import java.awt.*; 

public class IfGrid 
{ 
    public static void main(String[] args) 
    { 
     DrawingPanel panel = new DrawingPanel(400, 400); 
     panel.setBackground(Color.blue); 
     Graphics g = panel.getGraphics(); 

     int sizeX = 40; 
     int sizeY = 40; 
     for (int x = 0; x < 10; x++) 
     { 
      for (int y = 0; y < 10; y++) 
      {  
       int cornerX = x*sizeX; 
       int cornerY = y*sizeY; 

       if (x == 4){ // If Statements start here 
        g.setColor(Color.green); } 
       if (x == 5) { 
         g.setColor(Color.blue); } 
       if (x == 6) { 
         g.setColor(Color.red); } 
       else { 
        g.setColor(Color.yellow); } 

       g.fillRect(cornerX, cornerY, sizeX-1, sizeY-1); 
       g.setColor(Color.black); 
       g.drawString("x="+x, cornerX+10, cornerY+15); // text is positioned at its baseline 
       g.drawString("y="+y, cornerX+10, cornerY+33); // offsets from the corner do centering  
      } 
     } 
    } 
} 

它应该是什么样子:(我用的油漆来表示)

Correct Picture Example

我得到(错):

Wrong Output

回答

2

您可以使用else if来解决这个问题:

if (x == 4) { 
    g.setColor(Color.green); 
} else if (x == 5) { 
    g.setColor(Color.blue); 
} else if (x == 6) { 
    g.setColor(Color.red); 
} else { 
    g.setColor(Color.yellow); 
} 

在你当前的代码,最后else声明应用于每一次x != 6,这样可使行变成黄色。

+0

因此,它检查条件是否为真,然后执行“else”? – Aramza

+1

正确。它检查'x'是否是4,5或6,如果它们都不是,那么它将它设置为黄色。 –

1

你有4情况来考虑:

  1. X == 4,绿色
  2. X == 5,蓝色
  3. X == 6,红
  4. 别的,黄

但是,如果您的第三个if语句实现,如果x == 6红色其他黄色,所以即使列已被前一个if设置为绿色或蓝色,它将在这里重新设置为黄色。