繁体   English   中英

我如何解决 ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1 当尝试单独打印一个 csv 文件时

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM