为了账号安全,请及时绑定邮箱和手机立即绑定

检查 ArrayList 中的数字重复 - Java

检查 ArrayList 中的数字重复 - Java

慕容森 2021-12-30 16:07:31
我目前正在制作一个数独程序,但是我当前的代码似乎让我失望。如果一行多次包含相同的数字,下面的脚本应该打印出“不一致的数独谜题”,但遗憾的是它没有......我尝试了几种不同的尝试,但都没有成功。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();}在这里,我将它加载到我的 main.js 中。代码要复杂得多,但这些应该是涉及问题的部分。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 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

问题

您正在使用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


查看完整回答
反对 回复 2021-12-30
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

这一行:

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

总是false因为您将 achar与 an进行比较int

将其替换为

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

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


查看完整回答
反对 回复 2021-12-30
?
动漫人物

TA贡献1815条经验 获得超10个赞

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

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


查看完整回答
反对 回复 2021-12-30
  • 3 回答
  • 0 关注
  • 189 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号