gpt4 book ai didi

java - 一个文本文件出现数组索引越界异常,但 Java 中的另一个类似文件却没有出现数组索引越界异常?

转载 作者:行者123 更新时间:2023-12-01 09:59:42 25 4
gpt4 key购买 nike

所以我编写了这个程序,它接收一个文本文件,获取该文件中的数据并将其放入一个 2D 字符数组中,以便以各种方式打印到屏幕上。我拥有的其中一个文件工作正常,但是,在尝试“对角线”打印第二个文件时出现问题。首先,这是第一个更简单的文件,可以正常工作:

5 4
FILE
WITH
SOME
MORE
INFO

在这两个文件中,前两个整数分别表示将为 2D 字符数组创建的行数和列数。接下来,这是此文件“testfile.txt”的部分代码以及代码的结果:

public static void main(String[] args) throws IOException
{
char[][] charArray = readFile();

printArray(charArray);
printVerticalArray(charArray);
printHorizontalArray(charArray);
printDiagonalArray(charArray);
}

public static char[][] readFile() throws IOException
{
File myFile = new File("monalisa.txt");
Scanner inputFile = new Scanner(myFile);

int rows, columns;
rows = inputFile.nextInt();
columns = inputFile.nextInt();

String[] strArray = inputFile.nextLine().split(" ");

char[][] array = new char[rows][columns];

for(int i = 0; i < rows; i++)
{
array[i] = inputFile.nextLine().toCharArray();
}
return array;
}
.
.
.
public static void printDiagonalArray(char[][] cArray)
{
for(int i = 0; i < 1; i++)
{
for(int c = cArray[i].length - 1; c >= 0; c--)
{
for(int r = cArray[c].length; r >= 0; r--)
{
System.out.print(cArray[r][c]);
}
System.out.println();
}
System.out.println();
}
}

结果:

Original Text: 

FILE
WITH
SOME
MORE
INFO

Transformations:

INFO
MORE
SOME
WITH
FILE


ELIF
HTIW
EMOS
EROM
OFNI


OEEHE
FRMTL
NOOII
IMSWF

所以这正是程序应该如何工作的,但是,每当我尝试将第二个文件“monalisa.txt”放入程序时,我都会遇到数组越界异常,但我无法弄清楚为什么。这是原始的第二个文本文件(这是一个 Google Drive 链接,因为它太大而无法在此处显示):https://drive.google.com/open?id=0BwujWiqVRKKsajlKV1NIWG1uQVU

这是使用此文本文件进行编程的结果:https://drive.google.com/open?id=0BwujWiqVRKKsUnZYQTU4YmZDWUE

代码中的第78行是:

for(int r = cArray[c].length; r >= 0; r--)

那么有人知道为什么会发生这种情况吗?感谢大家阅读本文!

最佳答案

排队

for(int r = cArray[c].length; r >= 0; r--)

您没有正确设置 r 的初始值。您不应该检查当前列中的行数,而应该检查一般行数,因为每列的行数都是相等的。将此行更改为

for(int r = cArray.length-1; r >= 0; r--)

关于java - 一个文本文件出现数组索引越界异常,但 Java 中的另一个类似文件却没有出现数组索引越界异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36902191/

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