Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建动态棋盘,偶数导致问题_Java_Javafx - Fatal编程技术网

Java 创建动态棋盘,偶数导致问题

Java 创建动态棋盘,偶数导致问题,java,javafx,Java,Javafx,我的家庭作业挑战是根据用户从JOptionPane输入的大小使用JavaFX制作棋盘。我已经完成了这项工作,并且只在奇数情况下工作得很好,我如何修正它,使其正确地适用于奇数和偶数 我假设这是一个如何轮询颜色的问题,因为对于偶数,每行都是相同的 Color[] colors = {Color.BLACK, Color.WHITE}; int nextColor = 0; for (int row = 0; row < size; row++) { f

我的家庭作业挑战是根据用户从JOptionPane输入的大小使用JavaFX制作棋盘。我已经完成了这项工作,并且只在奇数情况下工作得很好,我如何修正它,使其正确地适用于奇数和偶数

我假设这是一个如何轮询颜色的问题,因为对于偶数,每行都是相同的

    Color[] colors = {Color.BLACK, Color.WHITE};
    int nextColor = 0;

    for (int row = 0; row < size; row++) {
        for (int col = 0; col < size; col++) {
            nextColor = (nextColor == 0) ? 1 : 0;
            Rectangle rec = new Rectangle();
            rec.setWidth(50);
            rec.setHeight(50);
            rec.setFill(colors[nextColor]);
            GridPane.setRowIndex(rec, row);
            GridPane.setColumnIndex(rec, col);
            grid.getChildren().addAll(rec);
        }
    }
Color[]colors={Color.BLACK,Color.WHITE};
int nextColor=0;
对于(int row=0;row
奇数

偶数


如果要在电路板中使用交替颜色填充字段,偶数列将导致最后一个字段的颜色与行中第一个字段的颜色不同,因此下一行中的第一个字段的颜色将与正上方的字段的颜色相同

要解决此问题,只需添加列号和行号,并将其余部分除以2即可确定颜色:

Color[] colors = {Color.WHITE, Color.BLACK};

for (int row = 0; row < size; row++) {
    for (int col = 0; col < size; col++) {
        int nextColor = (row + col) % 2;
        Rectangle rec = new Rectangle();
        rec.setWidth(50);
        rec.setHeight(50);
        rec.setFill(colors[nextColor]);
        GridPane.setRowIndex(rec, row);
        GridPane.setColumnIndex(rec, col);
        grid.getChildren().addAll(rec);
    }
}
Color[]colors={Color.WHITE,Color.BLACK};
对于(int row=0;row
另一种不同于muzzlator建议的变体是,只按位置设置颜色,而不存储当前的备用颜色。正如您所看到的,这很容易出错


只需使用
intcolor=(行+列)%2

欢迎使用堆栈溢出!看起来你可能在请求家庭作业帮助。虽然我们对此本身没有问题,但请注意这些,并相应地编辑您的问题。(即使这不是家庭作业,也要考虑这个建议。)谢谢!我没想过用余数法。