JavaFX:嵌套用于放置矩形的循环无效

时间:2019-05-16 16:00:22

标签: java javafx iteration javafx-8 nested-loops

我试图通过使用for循环并创建不同颜色的矩形来创建一个棋盘格。我正在使用两个嵌套的for循环:第一个用于处理所有以黑色正方形开头的行,第二个用于处理所有以红色正方形开头的行。我有一个x坐标列表和两个单独的y坐标列表:y1coords是与所有以黑色正方形开头的行相对应的y坐标,而y2coords是与以一个红色正方形开头的行相对应的所有y坐标。

//Nested for loop for every row starting with a black square
List<Double> y1coords = Arrays.asList(0.0,150.0,300.0,450.0);
List<Double> xcoords = Arrays.asList(0.0,75.0,150.0,225.0,300.0,375.0,450.0,525.0);
for (int j=0; j<y1coords.size(); j++)
{
  for (int i=0; i<xcoords.size(); i++)
  {
    if (xcoords.get(i)%2 == 0)
    {
      Rectangle square = new Rectangle(75,75,Color.BLACK);
      square.setX(xcoords.get(i));
      square.setY(y1coords.get(j));
      root.getChildren().add(square);
    }
    else
    {
      Rectangle square = new Rectangle(75,75,Color.RED);
      square.setX(xcoords.get(i));
      square.setY(y1coords.get(j));
      root.getChildren().add(square);
    }
  }
}
//Nested for loop for every row starting with a red square
List<Double> y2coords = Arrays.asList(75.0,225.0,375.0,525.0);
for (int j=0; j<y2coords.size(); j++)
{
  for (int i=0; i<xcoords.size(); i++)
  {
    if (xcoords.get(i)%2 != 0)
    {
      Rectangle square = new Rectangle(75,75,Color.BLACK);
      square.setX(xcoords.get(i));
      square.setX(y2coords.get(j));
      root.getChildren().add(square);
    }
    else
    {
      Rectangle square = new Rectangle(75,75,Color.RED);
      square.setX(xcoords.get(i));
      square.setX(y2coords.get(j));
      root.getChildren().add(square);
    }
  }
}

我希望它可以创建一个漂亮的棋盘格,但是它始终使我的第一行全黑,并且不执行任何以红色正方形开头的行。访问https://pbs.twimg.com/media/D6szyy7X4AEMGtk.jpg:large以了解我的意思。

1 个答案:

答案 0 :(得分:0)

在第二个嵌套的循环中编辑代码

来自

square.setX(y2coords.get(j));

square.setY(y2coords.get(j));

最终结果是

                if (xcoords.get(i) % 2 != 0) {
                    Rectangle square = new Rectangle(75, 75, Color.BLACK);
                    square.setX(xcoords.get(i));
       /*here*/     square.setY(y2coords.get(j));
                    root.getChildren().add(square);
                } else {
                    Rectangle square = new Rectangle(75, 75, Color.RED);
                    square.setX(xcoords.get(i));
     /*and here*/   square.setY(y2coords.get(j));
                    root.getChildren().add(square);
                }