从文本文件中读取图形的值?

时间:2016-07-08 15:28:09

标签: java adjacency-matrix

我有一个程序,它将从数组中获取值。

 int graph[][] = new int[][] {{0, 2, 0, 6, 0},
                                {2, 0, 3, 8, 5},
                                {0, 3, 0, 0, 7},
                                {6, 8, 0, 0, 9},
                                {0, 5, 7, 9, 0},
                               };

我已尝试将内联输入更改为文本文件输入,但我遇到类型不匹配错误。

Scanner inFile = new Scanner(new File("split_this.txt"));
String s = inFile.nextLine();
int numberOfVertices = Integer.parseInt(s);
while (inFile.hasNext()) {
    s = inFile.nextLine();
    String[] triplet = s.split("[\\|]");
    String[][] tokens = new String[ triplet.length ][];
    for (int i = 0; i < triplet.length; i++){
        tokens[i] = triplet[i].split("[,]");
    }
    for (int z = 0; z < tokens.length; z++){
         for (int i = 0; i < tokens[z].length; i++){
            int graph[][] = tokens[z][i];
         }
    }
}

请帮帮我。

1 个答案:

答案 0 :(得分:0)

如果您对文件格式有控制权,那么我建议您遵循这个在许多竞争问题中使用的格式:

row col
val11 val12 val13 ...
val21 val22 val23 ...
val31 val32 val33 ...
...

您案例的例子

5 5
0 2 0 6 0
2 0 3 8 5
0 3 0 0 7
6 8 0 0 9
0 5 7 9 0

在此之后,使用Scanner读取输入:

Scanner scan - new Scanner(file);
int row = scan.nextInt();
int col = scan.nextInt();
int[][] graph = new int[row][col];
for(int r=0; r<row; r++) {
   for(int c=0; c<col; c++) {
      graph[r][c] = scan.nextInt();

  }
}