检查ArrayList中的数字是否重复-Java

时间:2018-11-04 20:33:06

标签: java eclipse

我当前正在制作数独程序,但是我当前的代码似乎使我失败了。如果一行多次包含相同的数字,则下面的脚本应打印出“不一致的数独谜题”,但遗憾的是它没有..我尝试了几次尝试,但都没有成功。

public void checkRow() {
    int count = 0;

    for(int j = 0; j < list.size(); j++) {
        for(int a = 1; a < 10; a++) {
            for (int i=0; i < list.get(j).length(); i++) {
                if(list.get(j).charAt(i) == a) {
                    count++;
                    if(count >= 2) {
                        System.out.println("Inconsistent sudoku puzzle");
                        count = 0;
                    }
                }
            }
            count = 0;
        }
    }
}

这是我所有错误检查的集合:

public void errorCheck() {
    this.checkRow();
    this.checkColumn();
    this.checkBox();
}

我在这里将其加载到我的主机中。该代码更加详尽,但是应该是涉及该问题的部分。

public static void main(String[] args) throws Exception  {
    Sudoku s = new Sudoku("C:\\Users\\caspe\\Downloads\\Sudoku001.sdk");
    s.printBoard();
    s.errorCheck();
    s.getNum();


    while(getNum() > 0) {
        System.out.println("Next move, please (row , column , value )");
        Scanner scanner = new Scanner(System.in);
        int row = scanner.nextInt();
        int column = scanner.nextInt() ;
        int value = scanner.nextInt();
        if (s.moves(row, column, value)); {
            s.errorCheck();
        }

        s.printBoard();
    }
}

3 个答案:

答案 0 :(得分:2)

问题

您正在使用charAt,并尝试将其结果与数字进行比较:

list.get(j).charAt(i) == a 

但是,您正在将字符的ascii值与数字进行比较。

示例

String a = "3";
System.out.println((int) a.charAt(0)); // This prints 51

解决方案

如果要比较数字值,则必须执行以下操作:

String a = "3";
System.out.println(Character.getNumericValue(a.charAt(0))); // This prints 3

Character.getNumericValue(a.charAt(0))返回字符的数字值。


实施

在您的代码中实现如下所示:

Character.getNumericValue(list.get(j).charAt(i)) == a

答案 1 :(得分:1)

此行:

if(list.get(j).charAt(i) == a)

始终为false,因为您将charint进行了比较。

替换为

if((list.get(j).charAt(i)-'0') == a)

list.get(j).charAt(i)-'0'为您提供字符的数字表示形式

答案 2 :(得分:1)

问题是: 'if(list.get(j).charAt(i)== a)'

与ascii表上的“ a”值进行比较