java - 如何从文本文件中挑选出单独的数字?

标签 java

对于一个项目,我正在创建一个数独求解器。我需要从我在命令行中调用的文件中获取信息(即命令行保存包含数独谜题的文本文件的路径)。我的方法是将每一行、每一列和 3x3 框相加,以验证它是否等于 45(1 到 9 相加)。由于 1-9 必须位于每一行、每一列以及 3x3 中,因此如果存在重复数字或缺少一个数字,则至少其中一个数字将不正确。

但是,我遇到的问题是我不知道如何从文本文件中挑选出单独的数字。我正在使用

File f = new File(args[0]);

将文件拉入我的项目,但我不知道如何从中访问特定元素。有想法吗?

编辑:该文件是一个 .txt 文件,如下所示...

1 4 5 3 2 7 6 9 8
8 3 9 6 5 4 1 2 7
6 7 2 9 1 8 5 4 3
4 9 6 1 8 5 3 7 2
2 1 8 4 7 3 9 5 6
7 5 3 2 9 6 4 8 1
3 6 7 5 4 2 8 1 9
9 8 4 7 6 1 2 3 5
5 2 1 8 3 9 7 6 4

这可以访问数字数组中的每个数字吗?

int sum = 0;
for(int i=0; i<10; i++){
   sum +=numbers [i] 
}

最佳答案

您可以将数字读入二维数组,如下所示:

Scanner scan = new Scanner(inputFile);

int[][] grid = new int[9][9];

for ( int i = 0; i < 9; i++ ) {
    for ( int j = 0; j < 9; j++ ) {
        if ( ! scanner.hasNextInt() ) {
             // exit with error since it couldn't read all 81 integers 
        }
        // read next integer into 9x9 grid array
        grid[i][j] = scanner.nextInt();
    }
}

那么您应该验证每一行、每一列和相关的 3x3 子方 block 。检查每个数字的总和是否为 45 是不够的(考虑一个充满 5 的网格,它通过了该测试,但显然是不正确的),因此您需要验证每个数字是否包含从 1 到 9 的每个不同值。

关于java - 如何从文本文件中挑选出单独的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32515288/

相关文章:

java - 获取对象的单个实例

java - JCheckbox 更改监听器收到鼠标悬停事件的通知

java - 为什么 map 标记会在 map 周围徘徊

java - 在双链表中插入节点

java - 将 HTML 转换为 PDF 并将其添加到段落中

Java : copy files efficiently with channel

java - 如何在警报对话框中将标题和正/负按钮设为黑色

java - Java 和 iText 中的 PDF 页码

java - 使用 Spring IoC 设置枚举值

java - Netty io.netty.buffer.ByteBuf.array() 抛出异常 - 直接缓冲区