[英]ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
[英]How can i solve ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1 when trying to print out a csv file individually
当我尝试使用以下代码打印出我的 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 文件时:
Book,The_Hunger_Games,Suzanne_Collins,9780439023481,14/10/2008,N/A,N/A,No
Comic_book,Astonishing_X-Men,Warren_Ellis,N/A,2004,Simone_Bianchi,N/A,No
Audio_book,Never_Finished,David_Goggins,N/A,06/12/2022,N/A,David_Goggins,No
我遇到了错误代码:线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException:索引 1 超出范围,长度为 1,在 searchBook.main(searchBook.java:29)
有没有办法来解决这个问题?
我试图删除 csv 文件中的所有空格,以防可能是问题所在,但这没有效果。
此外,由于当我尝试仅打印出 0 值时索引值为 1 或更大,因此它打印出了 csv 文件中的所有内容。
任何帮助,将不胜感激!
CSVReader#readNext()
读取下一行并将其拆分为它的值。 这意味着,在读者位于a,b,c,d
时使用.readNext()
将产生["a", "b", "c", "d"]
。 您现在代码中的.split
是多余的,并且在每种情况下都会失败,因为 CSV 文件的各个单元格中不应有逗号。 相反,将bookInfo
替换为nextLine
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.