编写数组以将csv导入java

编写数组以将csv导入java,java,arrays,Java,Arrays,我尝试编写一个java程序来导入csv文件并将数据放入数组,需要将字符串转换为日期和双精度。最后,我想将结果打印到屏幕上,以显示我的程序是否运行良好 它实际上是我的大学之一。用户需要将日期输入为args的作业 在我编写所有代码并尝试运行它之后,它显示了以下错误消息: Exception in thread "main"java.lang.ArrayIndexOutofBoundsException: 0 at ReadCSV.main(ReadCSV.java:10) 有人能告诉我我

我尝试编写一个java程序来导入csv文件并将数据放入数组,需要将字符串转换为日期和双精度。最后,我想将结果打印到屏幕上,以显示我的程序是否运行良好

它实际上是我的大学之一。用户需要将日期输入为args的作业

在我编写所有代码并尝试运行它之后,它显示了以下错误消息:

Exception in thread "main"java.lang.ArrayIndexOutofBoundsException: 0 
    at ReadCSV.main(ReadCSV.java:10)
有人能告诉我我在程序中犯了什么错误吗

  import java.util.*;
  import java.text.*;'
  import java.io.*;
  import java.text.ParseException;

 public class ReadCSV {
 public static void main(String[] args) throws IOException, ParseException{
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date startDate, endDate;
    startDate = sdf.parse(args[0]);
    endDate = sdf.parse(args[1]);
    File file = new File("table.csv");
    Scanner inputfile = new Scanner(file);
    inputfile.next();
    inputfile.next();
    int count ; 
    count = NumRows();
    Date[] date_tr = new Date [count];
    Double[] open = new Double[count];
    Double[] high = new Double[count];
    Double[] low = new Double[count];
    Double[] close = new Double[count];
    int i = 0;

    while(inputfile.hasNext()){
        String data_row = inputfile.next();
        String[] data = data_row.split(",");
        date_tr[i]=sdf.parse(data[0]);
        open[i]=Double.parseDouble(data[1]);
        high[i]=Double.parseDouble(data[2]);
        low[i]=Double.parseDouble(data[3]);
        close[i]=Double.parseDouble(data[4]);
        SimpleDateFormat outFormat = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println( outFormat.format(date_tr[i]) + " " + open[i] + " " + high[i] + " "+ low[i]+ " " + close[i]);
        i++;
    }
 inputfile.close();
}
  public static int NumRows() throws IOException{
      File file = new File("table.csv");
        Scanner inputfile = new Scanner(file);
        inputfile.next();
        inputfile.next();
        int count = 0; 
        while (inputfile.hasNext()){
            String data_row = inputfile.next();
            count++; 
        }

    return count;
  }

}您需要传递命令行参数。由于您没有传递命令行参数,因此您的代码在此失败:

startDate = sdf.parse(args[0]);
endDate = sdf.parse(args[1]);
它试图在索引0和1处查找您未传递的参数

您需要运行以下命令:

java ReadCSV 2014-09-28 2014-10-28

您应该标记语言。这有助于其他人找到问题,也会影响代码语法着色。抱歉,因为我对java和本网站完全陌生,所以我不知道如何键入最适合其他人的帖子。是的,这是我想做的“java ReadCSV 2014-09-28 2014-10-28”但是我怎样才能传递命令行参数呢???这里2014-09-28和2014-10-28是两个命令行参数,在你的程序中读作args[0]和args[1],那么我应该如何更正代码,使程序把2014-09-28读作日期呢?它已经读作args[0]了。因此,使用java ReadCSV 2014-09-28 2014-10-28,在程序args[0]=2014-09-28和args[1]=2014-10-28中,如果要更改日期,请在提供上述命令时根据位置更改日期。谢谢你的回复。我再次尝试运行该程序,通过输入“java ReadCSV 2014-05-01 2014-10-31”,程序可以运行,当它打印出数据时,输入,日期格式很奇怪,显示类似“0019-04-05”。。。我认为标准化日期格式的代码有一些错误。我会阅读你提供的链接,看看如何修复它。