如何解决ArrayIndexOutOfBoundsException:当尝试单独打印出csv文件时,索引1出界长度为1.



当我尝试使用以下代码打印出csv文件中的每个值时:

import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import com.opencsv.CSVReader;
import com.opencsv.exceptions.CsvValidationException;
public class searchBook {


public static void main(String[] args)throws IOException, CsvValidationException {
Main a = new Main();

String fileName = "bookData.csv";
try (var fr = new FileReader(fileName, StandardCharsets.UTF_8);
var reader = new CSVReader(fr)) {
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
Integer i = 0;
for (String e : nextLine) {
String[] bookInfo = nextLine[i].split(",", -2);
i++;
System.out.println(bookInfo[0]);
String type = bookInfo[0];
String title = bookInfo[1];
String author = bookInfo[2];
String ISBN = bookInfo[3];
String pubDate = bookInfo[4];
String illustrator = bookInfo[5];
String narrator = bookInfo[6];




if(a.book.equals(title) || a.book.equals(author) || a.book.equals(ISBN) || a.book.equals(illustrator) || a.book.equals(narrator)) {
String typeSaved = bookInfo[0];
String titleSaved = bookInfo[1];
String authorSaved = bookInfo[2];
String ISBNSaved = bookInfo[3];
String pubDateSaved = bookInfo[4];
String illustratorSaved = bookInfo[5];
String narratorSaved = bookInfo[6];


}

}
}

}

} public Object typeSaved, titleSaved, authorSaved, ISBNSaved, pubDateSaved, illustratorSaved, narratorSaved; 
}

使用CSV文件时:

的书,The_Hunger_Games Suzanne_Collins, 9780439023481, 14/10/2008, N/A N/A,没有

Comic_book、Astonishing_X-Men Warren_Ellis, N/A, 2004年,Simone_Bianchi, N/A,没有

Audio_book、Never_Finished David_Goggins, N/A, 06/12/2022, N/A, David_Goggins,没有

i遇到错误代码:线程"main"中的异常java.lang.ArrayIndexOutOfBoundsException:在searchBook.main(searchBook.java:29)中索引1超出长度1的边界

有办法解决这个问题吗?

我试图删除csv文件中的所有空格,以防这可能是问题,但这没有效果。

由于索引值为1或更大,当我试图打印0值时,它会打印出csv文件中的所有内容。

任何帮助将不胜感激!

CSVReader#readNext()读取下一行并将其拆分为它的值。这意味着,当读取器在a,b,c,d时使用.readNext()将产生["a", "b", "c", "d"]。现在代码中的.split是多余的,在任何情况下都会失败,因为CSV文件的单个单元格中不应该有逗号。请将bookInfo替换为nextLine

最新更新