Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“main”java.lang.ArrayIndexOutofBounds异常:3_Java_Csv_Stream_Filestream_Opencsv - Fatal编程技术网

“main”java.lang.ArrayIndexOutofBounds异常:3

“main”java.lang.ArrayIndexOutofBounds异常:3,java,csv,stream,filestream,opencsv,Java,Csv,Stream,Filestream,Opencsv,我想提取CSV文件的一个特定单列值。因此,我使用了CSV文件的数据集,其实例数为45211,属性数为17。 我试过这个代码,但它给我的错误是这样的。。 main java.lang.ArrayIndexOutOfBoundsException:3 请帮助我 import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; import java.util.loggin

我想提取CSV文件的一个特定单列值。因此,我使用了CSV文件的数据集,其实例数为45211,属性数为17。 我试过这个代码,但它给我的错误是这样的。。 main java.lang.ArrayIndexOutOfBoundsException:3

请帮助我

 import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Scanner;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    public class Main {

        public static void main(String[] args) {
            // TODO code application logic here

            String filename ="bank-full.csv";
            File file= new File(filename);

            try {

                Scanner inputStream = new Scanner(file);
                inputStream.next();
                 while(inputStream.hasNext())
                {
                    String data= inputStream.next();
                    String[] values = data.split(",");
                   // double balance= Double.parseDouble(values[2]);
                    System.out.println(values[3]);
                }           

                    inputStream.close();
            } catch (FileNotFoundException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }

        }

    }

我假设你想一次读一行:

    Scanner inputStream = new Scanner(file);

    while(inputStream.hasNextLine())
    {
        String data = inputStream.nextLine();
        String[] values = data.split(",");
        System.out.println(values[3]); // now, this line is safe only if you are 
                                       // sure that each row would have at least 3 commas
    }  

1您确定文件中的delimeter是逗号吗

2文件中是否有空列?如果存在,请使用以下方法进行拆分:

String[] values = data.split(",", -1);

在引发异常的行上放置断点。在调试模式下运行该类,并观察访问引发异常的变量的值。在本例中是数组。您是否调试并检查了“值”的实际值?是否检查是否使用了正确的分隔符?试图迭代数组以检查值的数量?感谢它的所有帮助我…我完成了…没有命名值…你能在失败的文件中发布行吗?请尝试打印字符串data=inputStream.next,并为我们提供最后一行打印内容。