编写数组以将csv导入java
我尝试编写一个java程序来导入csv文件并将数据放入数组,需要将字符串转换为日期和双精度。最后,我想将结果打印到屏幕上,以显示我的程序是否运行良好 它实际上是我的大学之一。用户需要将日期输入为args的作业 在我编写所有代码并尝试运行它之后,它显示了以下错误消息:编写数组以将csv导入java,java,arrays,Java,Arrays,我尝试编写一个java程序来导入csv文件并将数据放入数组,需要将字符串转换为日期和双精度。最后,我想将结果打印到屏幕上,以显示我的程序是否运行良好 它实际上是我的大学之一。用户需要将日期输入为args的作业 在我编写所有代码并尝试运行它之后,它显示了以下错误消息: Exception in thread "main"java.lang.ArrayIndexOutofBoundsException: 0 at ReadCSV.main(ReadCSV.java:10) 有人能告诉我我
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”。。。我认为标准化日期格式的代码有一些错误。我会阅读你提供的链接,看看如何修复它。