java - 尝试用 Java 从外部文件读取矩阵时陷入困境

标签 java

我正在尝试读取此文件:

  1|2|3|4|5|81||
  6|7|8|9|10|91||
  11|12|13|14|15|92||
  16|17|18|19|20|93||end

并将它们存储为带有分隔符|的二维数组。这是我的方法

   public  void setMatrixFromFile(FileReader fIn) throws FileNotFoundException{

         int row, col;
         Matrix = new double[HIGHEST_INDEX+1][HIGHEST_INDEX+1];
         Scanner scanFile;
         scanFile = new Scanner(fIn).useDelimiter("|");
         row = LOWEST_INDEX + 1;
         col = 0;
         while (row <= HIGHEST_INDEX && (scanFile.hasNext()) && 
                 (!scanFile.next().matches("(.*)end(.*)"))){
               col = LOWEST_INDEX + 1;
               while (col <= HIGHEST_INDEX && scanFile.hasNext() && 
                       (!scanFile.next().matches("(.*)||(.*)"))){
                        if (scanFile.hasNextDouble() || scanFile.hasNextInt()){
                            this.setElMatrix(row, col, scanFile.nextDouble());
                            col++;
                        }
               }
               if (scanFile.hasNext()){
                   scanFile.next();
               }
               row++;
         }
         this.setColEff(col);
         this.setRowEff(row-1);
     }

setElMatrix 顾名思义只有这个

     public void setElMatrix(int i, int j, double elMatrix)  
     {
     Matrix[i][j] = elMatrix; // i = row index, j = column index
     }

嗯,HIGHEST_INDEX 已设置为 100LOWEST_INDEX 已设置为 0。然后,我有以下代码来(手动)测试上述代码。

     import java.util.*;
     import java.io.*;

     public class TestMatriks
     {
     public static void main (String []args) throws FileNotFoundException{
            Matriks mTest1 = new Matriks();
            FileReader fin = new FileReader("testcase.txt");
            mTest1.setMatrixFromFile(fin);
            mTest1.outMatrix();

            }
     }

outMatrix 用于将二维数组输出到监视器中,预期输出为

   1.0 2.0 3.0 4.0 5.0 81.0
   6.0 7.0 8.0 9.0 10.0 91.0
   11.0 12.0 13.0 14.0 15.0 92.0
   16.0 17.0 18.0 19.0 20.0 93.0 

当执行上面的代码时,会产生以下结果:

   0.0
   0.0

我仍然无法弄清楚我的代码出了什么问题。是的,我已经阅读了尽可能多的引用资料,询问了我的 friend ,但这没有帮助。

第二个问题:如果我将文件移动到与源代码中放置的目录不同的目录中,我该如何修改上面的代码?我想将整个项目(和文件)放入可移植存储中,并将输入文件放入与代码分开的文件夹中。

编辑:

有关 Matrix 类的更多详细信息:

 import java.util.*;
 import java.io.*;

 public class Matriks
 {
 private static final int ROW_SIZE = 101;  
 private static final int COLUMN_SIZE = 101;  
 private static final double Val_Undef = -999999999999999.999;  //unused 
 private static final int LOWEST_INDEX = 0;  
 private static final int HIGHEST_INDEX =100; 
 private static final int IDX_UNDEF = -9999; 
 private double[][] Matrix;
 private int rowEff;
 private int colEff;

 //methods

}

抱歉我的英语不好,如果我的问题太明显了,我也很抱歉。我的java还处于初级水平。

最佳答案

一些观察:

  1. 索引应该从0开始。低于+1不是必需的。 行=最低索引+1; 列 = LOWEST_INDEX + 1;

  2. 由于您使用 | 进行标记化分隔符,你将无法捕获 ||在下面的正则表达式匹配中。 !scanFile.next().matches("(.)||(.)")

  3. 在代码中间放置一些 System.out 日志,然后查看扫描仪返回的数据。

关于java - 尝试用 Java 从外部文件读取矩阵时陷入困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32879098/

相关文章:

java - 前端Java,后端C++,如何加入?

java - Formatter VS DateFormat 不一致

java - 使用 java 集合对 Person 的 ArrayList 进行排序

java - tomcat服务器开启时执行代码

java - 无法显示 Java 中查询的搜索结果

java - 如何在使用堆栈时反转字符串中的单个单词?

java - 是否可以将 Mockito mock 配置为在一次调用中调用多个答案?

java - 玩!框架 2.2.0 : impossible to debug in Eclipse

java - 外观模式和抽象工厂模式有什么区别?

Java 时区 - IST 的奇怪行为?