我有一个程序,它将从数组中获取值。
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];
}
}
}
请帮帮我。
答案 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();
}
}