将文件中的元素存储到 array/matrix
storing elements from a file into an array/matrix
我正在尝试从包含以下行的输入文件中保存元素:
numNodes 2
numEdges 2
node 0 0.62
node 1 0.83
edge 0 1 -silence- 0 78
edge 0 2 -silence- 0 38
我已经使用扫描仪打开文件并将输入分解为行和词,以访问每个单独的字符串。
我正在尝试将每个双精度保存在包含双精度的数组中的节点行中:
this.nodeTimes = new double[numNodes];
同样将每条边线上的三个词保存在邻接矩阵中:
this.adjMatrix = new Edge[numNodes][numNodes];
但是在我的尝试中我遇到了 ArrayIndexOutOfBoundsExceptions
for (int i = 0; i < list.size(); i++) {
String line = list.get(i);
...
} else if (words[0].equals("node")) {
nodeTimes[numNodes] = Double.parseDouble(words[3]); // trying to get doubles
} else if (words[0].equals("edge")) {
adjMatrix[Integer.parseInt(words[1])][Integer.parseInt(words[2])] = new Edge((words[3]), Integer.parseInt(words[4]), Integer.parseInt(words[5])); // trying to store edge values
如果我尝试类似的操作,也会发生这种情况:
while(openedFile.hasNextDouble()){
nodeTimes[numNodes] = openedFile.nextDouble();
}
不太清楚我是怎么挂断电话的
编辑:
访问方式:
nodeTimes[Integer.parseInt(words[1])] = Double.parseDouble(words[3]);
和
adjMatrix[Integer.parseInt(words[1])][Integer.parseInt(words[2])] = new Edge((words[3]), Integer.parseInt(words[4]), Integer.parseInt(words[5]));
好像也给了我一个例外
再次查看您的代码,我知道问题出在哪里了。
您正在使用此行创建一个大小为 numNodes 的数组。
this.nodeTimes = new double[numNodes];
然后您正尝试使用此行访问 numNodes 处的索引
nodeTimes[numNodes] = Double.parseDouble(words[3]);
访问数组大小的索引总是会得到一个ArrayIndexOutOfBoundsExceptions
你只能从 0 到 numNodes - 1
我正在尝试从包含以下行的输入文件中保存元素:
numNodes 2
numEdges 2
node 0 0.62
node 1 0.83
edge 0 1 -silence- 0 78
edge 0 2 -silence- 0 38
我已经使用扫描仪打开文件并将输入分解为行和词,以访问每个单独的字符串。
我正在尝试将每个双精度保存在包含双精度的数组中的节点行中:
this.nodeTimes = new double[numNodes];
同样将每条边线上的三个词保存在邻接矩阵中:
this.adjMatrix = new Edge[numNodes][numNodes];
但是在我的尝试中我遇到了 ArrayIndexOutOfBoundsExceptions
for (int i = 0; i < list.size(); i++) {
String line = list.get(i);
...
} else if (words[0].equals("node")) {
nodeTimes[numNodes] = Double.parseDouble(words[3]); // trying to get doubles
} else if (words[0].equals("edge")) {
adjMatrix[Integer.parseInt(words[1])][Integer.parseInt(words[2])] = new Edge((words[3]), Integer.parseInt(words[4]), Integer.parseInt(words[5])); // trying to store edge values
如果我尝试类似的操作,也会发生这种情况:
while(openedFile.hasNextDouble()){
nodeTimes[numNodes] = openedFile.nextDouble();
}
不太清楚我是怎么挂断电话的
编辑:
访问方式:
nodeTimes[Integer.parseInt(words[1])] = Double.parseDouble(words[3]);
和
adjMatrix[Integer.parseInt(words[1])][Integer.parseInt(words[2])] = new Edge((words[3]), Integer.parseInt(words[4]), Integer.parseInt(words[5]));
好像也给了我一个例外
再次查看您的代码,我知道问题出在哪里了。
您正在使用此行创建一个大小为 numNodes 的数组。
this.nodeTimes = new double[numNodes];
然后您正尝试使用此行访问 numNodes 处的索引
nodeTimes[numNodes] = Double.parseDouble(words[3]);
访问数组大小的索引总是会得到一个ArrayIndexOutOfBoundsExceptions
你只能从 0 到 numNodes - 1