我如何 return 从 csv 返回特定数据?
How do I return back specific data from a csv?
我已经根据练习题编写了代码,但没有返回正确的数字。感觉好像我做对了一切。
static double Q3(String stockFilename, String date) {
// Given a filename with stock data in the format "date,price,volume" and a date, return the total value of all
// shares of the stock that were traded that day. The total value is price times (multiplication) volume.
String line = "";
String dataArray[];
double price = 0.0;
double volume = 0.0;
try {
BufferedReader br = new BufferedReader(new FileReader(stockFilename));
while ((line = br.readLine()) != null) {
dataArray = line.split(",");
if(dataArray[0].equals(date)) //Finds the date of that day
price = Double.parseDouble(dataArray[1]); //Grabs price
volume = Double.parseDouble(dataArray[2]); //Grabs volume
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
return price*volume;
}
这是输出:
Incorrect on input: [data/FB_2016.csv, 2016-02-12]
Expected output : 3.6903954403536E9
Your output : 3.8674439998248E9
如您所见,它返回了一个非常相似的数字。
你的代码有几个错误。
1) 您需要总金额而不是单一的价格和数量。
2) 在你的 if() 中遗漏了 {}(volume = Double.parseDouble(dataArray[2]);
总是被执行)
因此,您 return [给定日期的最后价格] * [文件中的最后数量]。我觉得,和你想象的有点不一样。
3) 所以,你的代码应该是这样的:
double totalAmount = 0.0;
...
if(dataArray[0].equals(date)) {
totalAmount += Double.parseDouble(dataArray[1]) * Double.parseDouble(dataArray[2]);
}
...
return totalAmount;
在这种情况下,totalAmount 是给定日期所有记录的价格 * 交易量之和。
我已经根据练习题编写了代码,但没有返回正确的数字。感觉好像我做对了一切。
static double Q3(String stockFilename, String date) {
// Given a filename with stock data in the format "date,price,volume" and a date, return the total value of all
// shares of the stock that were traded that day. The total value is price times (multiplication) volume.
String line = "";
String dataArray[];
double price = 0.0;
double volume = 0.0;
try {
BufferedReader br = new BufferedReader(new FileReader(stockFilename));
while ((line = br.readLine()) != null) {
dataArray = line.split(",");
if(dataArray[0].equals(date)) //Finds the date of that day
price = Double.parseDouble(dataArray[1]); //Grabs price
volume = Double.parseDouble(dataArray[2]); //Grabs volume
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
return price*volume;
}
这是输出:
Incorrect on input: [data/FB_2016.csv, 2016-02-12]
Expected output : 3.6903954403536E9
Your output : 3.8674439998248E9
如您所见,它返回了一个非常相似的数字。
你的代码有几个错误。
1) 您需要总金额而不是单一的价格和数量。
2) 在你的 if() 中遗漏了 {}(volume = Double.parseDouble(dataArray[2]);
总是被执行)
因此,您 return [给定日期的最后价格] * [文件中的最后数量]。我觉得,和你想象的有点不一样。
3) 所以,你的代码应该是这样的:
double totalAmount = 0.0;
...
if(dataArray[0].equals(date)) {
totalAmount += Double.parseDouble(dataArray[1]) * Double.parseDouble(dataArray[2]);
}
...
return totalAmount;
在这种情况下,totalAmount 是给定日期所有记录的价格 * 交易量之和。