如何将方法从布尔值转换为int(java)?

时间:2014-11-09 20:54:45

标签: java int boolean converter 2d-games

所以我必须用Java构建一个Sudoku游戏。我能够在我的方法中确认数字1到9只在每行/每列中出现一次。但是,我将此设置为布尔值,并且在我的生活中无法弄清楚如何将其转换为整数(以便我可以返回发生错误的行/列)。

public static boolean rowColumnCheck(int[][] array) {

    for (int i = 0; i < 9; i++) {
        boolean[] rowArray = new boolean[9];
        boolean[] columnArray = new boolean[9];
        for (int j = 0; j < 9; j++) {
            int currentNumberRow = array[i][j];
            int currentNumberColumn = array[j][i];
            if ((currentNumberRow < 1 || currentNumberRow > 9)
                    && (currentNumberColumn < 1 || currentNumberColumn > 9)) {
                return false;
            }
            rowArray[currentNumberRow - 1] = true;
            columnArray[currentNumberColumn - 1] = true;

        }
        for (boolean booleanValue : rowArray) {
            if (!booleanValue) {
                return false;
            }
        }
        for (boolean booleanValue : columnArray) {
            if (!booleanValue) {
                return false;
            }
        }
    }
    return true;
}

2 个答案:

答案 0 :(得分:0)

你不能。每个方法基本上只有一个返回类型,而布尔值与Integer不兼容。你可以做的是将返回类型更改为Integer或者如果需要返回一组坐标则返回Pair,如果不存在则返回null。

我想这会是这样的。如果为null则没有错误,并且该对是错误位置。

public static Pair rowColumnCheck(int[][] array) {

    Pair <Integer, Integer> p = null;

    for (int i = 0; i < 9; i++) {
        boolean[] rowArray = new boolean[9];
        boolean[] columnArray = new boolean[9];
        for (int j = 0; j < 9; j++) {
            int currentNumberRow = array[i][j];
            int currentNumberColumn = array[j][i];
            if ((currentNumberRow < 1 || currentNumberRow > 9)
                    && (currentNumberColumn < 1 || currentNumberColumn > 9)) {
                p = new Pair<Integer, Integer>(i, j);
                return p;
            }
            rowArray[currentNumberRow - 1] = true;
            columnArray[currentNumberColumn - 1] = true;

        }
        // Not really sure why you are doing this?
        for (boolean booleanValue : rowArray) {
            if (!booleanValue) {
                return null;
            }
        }
        for (boolean booleanValue : columnArray) {
            if (!booleanValue) {
                return null;
            }
        }
    }
    return null;
}

答案 1 :(得分:0)

我有时会想要返回行/列对,有时是行,有时是列。如果这是正确的,那么您需要创建一个额外的类:

public class RowCol {
    public final int row;
    public final int col;

    public RowCol(int row, int col) {
        this.row = row;
        this.col = col;
    }
}

现在,当您想要确定发生错误的地方时,您可以

return new RowCol(i,j);

或表示没有指定列的行

return new RowCol(i,-1);

并且类似于列

return new RowCol(-1,j);

您的方法的返回类型为RowCol,当您从方法中返回时,您将能够查询其rowcol字段找出返回值的坐标。