gpt4 book ai didi

java - 为什么当我将元素从一维数组传输到二维数组时,在获取上一个循环生成的最后一个一维数组时

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:29 25 4
gpt4 key购买 nike

while (scanner.hasNextLine()) {
line = scanner.nextLine();
if (line.charAt(0) != '#') {
c++;
//looking to get dimensions of line segments from file.
dimensions = new int[c][4];

//Split my file input into an array of tokens(strings)
tokens = line.split(",");

for (int i = 0; i < tokens.length; i++) {
//Parse strings to int.
dimtoke[i] = Integer.parseInt(tokens[i]);

for (int k = 0; k < dimensions.length; k++) {
for (int j = 0; j < dimensions[0].length; j++) {
//attempt to fill 2d array with contents from file.
dimensions[k][j] = dimtoke[j];
}
}
}
}
}

我得到一个二维数组,其中包含文件中的最后一个维度,而不是所有维度。尺寸在单行文本中以 4 个为一组,因此我使用从文件中读取的每一行中的这些标记创建了一个数组,以便我可以将它们解析为整数。将一维整数数组传输到二维数组的过程中发生了一些事情。

最佳答案

您必须像这样关闭 {} token 循环:

for (int i = 0; i < tokens.length; i++) {
//Parse strings to int.
dimtoke[i] = Integer.parseInt(tokens[i]);
}//you need a closing here
for (int k = 0; k < dimensions.length; k++) {
for (int j = 0; j < dimensions[0].length; j++) {
//attempt to fill 2d array with contents from file.
dimensions[k][j] = dimtoke[j];
}
}

我会尽力向你解释。

每次你通过指令得到一个 int token 时 dimtoke[i] = Integer.parseInt(tokens[i]);

在获取 dimitoke[i+1] 中的下一个 int 之前,您会进入一个循环,用该 dimitoke[i] 填充二维数组中的所有 int。

当这些循环完成后(所有 2d 数组仅填充了 1 个 int),您再次向上并用下一个 int 填充 dimitoke,然后再次用该 int 填充所有 2d 数组。

你需要做的是首先完成for循环并用整组int填充dimitoke,然后用dimitoke中的int填充二维数组。

你的问题是,每次在 dimitoke 中放入一个 int 时,你都会填充整个数组,因此每次整个二维数组都只被 1 个 int 覆盖。

另一件事我认为是错误的:

当您填充二维数组时,您将 j 变量放入维度和 dimitoke 中,因此如果 dimitoke 长度不等于维度的第二个数组长度,则如果 dimitoke 为,您将再次填充每一行更大,如果更小则索引越界异常。这是一个例子:

迪米托克维度 = 10 = {0,1,2,3,4,5,6,7,8,9}

如果维度的维度为 4,则维度的输出将为:

0,1,2,3

0,1,2,3

0,1,2,3

。..c 行。

要修复这个问题,您可以将 dimitoke 变量更改为 int n(例如)并更改代码,如下所示:

int n =0;
for (int k = 0; k < dimensions.length; k++) {
for (int j = 0; j < dimensions[0].length; j++) {
//attempt to fill 2d array with contents from file.
dimensions[k][j] = dimtoke[n];
n++;
}
}

我希望错误现在就消失了

关于java - 为什么当我将元素从一维数组传输到二维数组时,在获取上一个循环生成的最后一个一维数组时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28143407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com