Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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_File_Matrix_Filereader - Fatal编程技术网

Java 数据无法从文件传输到整数数组

Java 数据无法从文件传输到整数数组,java,file,matrix,filereader,Java,File,Matrix,Filereader,所以我真的不知道如何用语言来表达。我无法将程序创建的文件中的数据传输回程序进行操作 程序将创建一个.sp文件,其中包含81个值0-9。下面是我正在使用的文件的外观: 000030640020698170085700003007010000090503060000060700800007290012489050054020000 我用于将这些值从文件拉入整数数组的代码是: JFileChooser chooser = new JFileChooser(); int[][] puz

所以我真的不知道如何用语言来表达。我无法将程序创建的文件中的数据传输回程序进行操作

程序将创建一个.sp文件,其中包含81个值0-9。下面是我正在使用的文件的外观:

000030640020698170085700003007010000090503060000060700800007290012489050054020000
我用于将这些值从文件拉入整数数组的代码是:

JFileChooser chooser = new JFileChooser();
        int[][] puzzle = new int[9][9];
        chooser.setCurrentDirectory(new File("~/Documents"));
        int retrieval = chooser.showSaveDialog(null);
        if(retrieval == JFileChooser.APPROVE_OPTION){
            FileReader fr = null;
            try {
                fr = new FileReader(chooser.getSelectedFile());
            } catch (FileNotFoundException e){
                e.printStackTrace();
            }
            BufferedReader textReader = new BufferedReader(fr);
            String line = textReader.readLine();

            int pos = 0;
            for(int i = 0; i < 9; i++)
                for(int j = 0; j < 9; j++){
                    System.out.println("Putting " + line.charAt(pos) + " in (" + i + ", " + j + ")");
                    puzzle[i][j] = line.charAt(pos);
                    pos++;
                }
我甚至得到了有意义的输出

Putting 0 in (0, 0)
Putting 0 in (0, 1)
Putting 0 in (0, 2)
Putting 0 in (0, 3)
Putting 3 in (0, 4)
Putting 0 in (0, 5)
Putting 6 in (0, 6)
Putting 4 in (0, 7)
Putting 0 in (0, 8)
Putting 0 in (1, 0)
但是,当我查看新创建的矩阵时,我得到:

48 48 48 48 51 48 54 52 48 
48 50 48 54 57 56 49 55 48 
48 56 53 55 48 48 48 48 51 
48 48 55 48 49 48 48 48 48 
48 57 48 53 48 51 48 54 48 
48 48 48 48 54 48 55 48 48 
56 48 48 48 48 55 50 57 48 
48 49 50 52 56 57 48 53 48 
48 53 52 48 50 48 48 48 48 
为什么会这样?我没有看到任何错误,调试系统似乎证明了这一点。数据是否以某种方式损坏了?

请看这里:

puzzle[i][j] = line.charAt(pos);
charAt
返回一个
char
,而不是
int
。将字符存储在数组中的某个位置时,将存储字符的Unicode代码点,而不是所需的整数值

这可以通过使用
Character
类的
getNumericValue
方法轻松解决:

puzzle[i][j] = Character.getNumericValue(line.charAt(pos));

line
输出为什么?@Tdorno添加了
line
的输出。facedesk--谢谢。
puzzle[i][j] = Character.getNumericValue(line.charAt(pos));