gpt4 book ai didi

java.lang.Exception : java. lang.ArrayIndexOutOfBoundsException:7

转载 作者:行者123 更新时间:2023-12-01 13:16:07 26 4
gpt4 key购买 nike

我试图将文件的每一行存储到字符串数组中。

/*
*Input file
*2 1 1 1 1 1 1.33 1
*4 2 15 3 9 3 0.185
*/

String[][] data_array = new String[1][7];
int i = 0;
int j = 0;
//file read
StringTokenizer tokenizer =new StringTokenizer(line,delim);
while (tokenizer.hasMoreTokens()) {
String token = tokenizer.nextToken();
data_array[i][j] = token;
j++;
}

但是显示

java.lang.Exception: java.lang.ArrayIndexOutOfBoundsException: 7

但是当我尝试使用时

String[][] data_array = new String[1][8];

我没有得到这个异常,而是得到下面的输出。

2 1 1 1 1 1 1.33 1 null
4 2 15 3 9 3 0.185 null

最佳答案

在 java 中,数组是从 0 开始的,即第一个元素的索引为 0,最后一个元素的索引为 n - 1(其中 n 是数组的长度)。

当您的数组被声明为[1][7]时,最后一个索引将为数字6。第一行包含 8 个值,因此您最终尝试将第 8 个值(索引 7)加载到包含 7 个元素的数组中。使用索引 7 会导致 IndexOutOfBoundException

此外,在您的特定情况下,输入的第一行包含 8 个元素,但第二行仅包含 7 个元素。如果您尝试将 7 个值加载到包含 8 个元素的数组中,则最后一个将为 null。对于您指定的输入,数组声明为长度为 8,输出将为:

2   1   1   1   1   1   1.33    1
4 2 15 3 9 3 0.185 null

(请注意,我添加了额外的空格以更好地指示数组的填充方式。)

此外,声明第一个维度为 1 的二维数组没有什么意义 - 这与声明一维数组相同。您可能想要做的是拥有一个数组,其第一维引用文件中的行,第二维引用行中的值。

关于java.lang.Exception : java. lang.ArrayIndexOutOfBoundsException:7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22451446/

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