java 如何解决数组索引超出边界异常:尝试单独打印csv文件时,索引1超出长度1的范围

ljsrvy3e  于 2022-12-17  发布在  Java
关注(0)|答案(1)|浏览(140)

当我尝试打印出我的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文件时:
预订,饥饿游戏,苏珊娜柯林斯,9780439023481,2008年10月14日,不适用,不适用,编号
漫画书,惊人的X战警,沃伦埃利斯,不适用,2004年,西蒙比安奇,不适用,没有
有声书,未完成,大卫_Goggins,不适用,2022年6月12日,不适用,David_Goggins,否
我遇到错误代码:线程“main”中出现异常java.lang.ArrayIndexOutOfBoundsException:索引1超出searchBook.main(searchBook.java:29)中长度为1的范围
有什么办法可以解决这个问题吗?
我试图删除csv文件中的所有空格,以防可能是问题所在,但没有效果。
此外,由于索引值为1或更大,当我试图只打印出0值时,它打印出了csv文件中的所有内容。
任何帮助将不胜感激!

gtlvzcf8

gtlvzcf81#

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

相关问题