gpt4 book ai didi

java - BufferReader 填充二维数组缺少最后一行

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

我正在尝试使用 BufferReader 填充二维数组,它成功填充了数组的所有行,除了最后一行之外。我尝试将循环增加一以解决该行,但出现索引越界错误。我怎样才能显示最后一行?

public static void  inputArray(char[][] outArray, String filename) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(filename));
for(int i = 0; i < outArray.length; i++) {
for(int j = 0; j < outArray[0].length; j++){
outArray[i][j] = (char)br.read();
}
}
br.close();
}
catch (IOException e) {
System.out.println("Error opening the file");
}
}

这是一些示例输出:

abcd
efgh
ijkl
mnop
qrst
uvwx

文件内容:

abcd
efgh
ijkl
mnop
qrst
uvwx
yzab

这是我用来打印数组的代码:

    for(int i = 0; i < test.length; i++) {
for(int j = 0; j < test[0].length; j++) {
System.out.printf("%1c",test[i][j]);
}
}

最佳答案

您正在将换行符存储在数组中。

鉴于该代码、该文件以及 outArray 包含 [7][4] 元素,outArray 最终应包含:

outArray[0][0] == 'a'
outArray[0][1] == 'b'
outArray[0][2] == 'c'
outArray[0][3] == 'd'
outArray[1][0] == '\n'
outArray[1][1] == 'e'
outArray[1][2] == 'f'
outArray[1][3] == 'g'
outArray[2][0] == 'h'
outArray[2][1] == '\n'
outArray[2][2] == 'i'
outArray[2][3] == 'j'
// etc
outArray[6][0] == '\n'
outArray[6][1] == 'u'
outArray[6][2] == 'v'
outArray[6][3] == 'w'

或以表格形式:

    0    1    2    3
0 'a' 'b' 'c' 'd'
1 '\n' 'e' 'f' 'g'
2 'h' '\n' 'i' 'j'
3 'k' 'l' '\n' 'm'
4 'n' 'o' 'p' '\n'
5 'q' 'r' 's' 't'
6 '\n' 'u' 'v' 'w'

这是因为您忽略了文件还包含换行符的事实。如果您的文件不包含任何换行符(即全部位于一行),那么您的代码将成功将其读入 7x4 数组。

如果您的文件始终具有相同的格式,您可以跳过换行符(因为您知道在哪里期待它们),如下所示:

for(int i = 0; i < outArray.length; i++) {
for(int j = 0; j < outArray[0].length; j++){
outArray[i][j] = (char)br.read();
}
br.read(); // read the next character (which will be a newline) and ignore it
}

关于java - BufferReader 填充二维数组缺少最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28259672/

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