Java 获取特定';元素';从导入的电子表格数据的字符串数组中?
对不起,这个问题的措辞很尴尬。长话短说,我有一份excel电子表格,其中包括纽约10个不同地区以及2008-2018年各自的每周平均天然气价格。我的任务是提取布法罗每年的平均汽油价格。整个电子表格中的数据被放入一个字符串数组中,而我目前采用的方法肯定是错误的 我将如何着手抓取水牛城2018年的每周天然气价格?如果有人能给我一个先发制人的建议,我就可以完成剩下的几年,以及家庭作业的其他两部分。我相信我应该使用StringBuilder,因为这是我们目前在课堂上讨论的内容。(特别是通过StringBuilder学习拆分、追加和子字符串) 以下是我当前的代码:Java 获取特定';元素';从导入的电子表格数据的字符串数组中?,java,Java,对不起,这个问题的措辞很尴尬。长话短说,我有一份excel电子表格,其中包括纽约10个不同地区以及2008-2018年各自的每周平均天然气价格。我的任务是提取布法罗每年的平均汽油价格。整个电子表格中的数据被放入一个字符串数组中,而我目前采用的方法肯定是错误的 我将如何着手抓取水牛城2018年的每周天然气价格?如果有人能给我一个先发制人的建议,我就可以完成剩下的几年,以及家庭作业的其他两部分。我相信我应该使用StringBuilder,因为这是我们目前在课堂上讨论的内容。(特别是通过StringB
package Chapter9;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Arrays;
public class GasPrices {
public static void main(String[] args) throws IOException {
String[] gasData = getData(); // download gas price into an array
StringBuilder sb = new StringBuilder();
for(String s : gasData) {
System.out.println(s);
sb.append(s);
}
}
public static String[] getData() throws IOException {
URL url = new URL("https://cs.wcupa.edu/schen/csc240/Gasoline_Retail_Prices_Weekly_Average_by_Region__Beginning_2008.csv");
URLConnection connection = url.openConnection();
InputStreamReader input = new InputStreamReader(connection.getInputStream());
BufferedReader buffer = null;
StringBuilder data = new StringBuilder();
String line = "";
try {
buffer = new BufferedReader(input);
while ((line = buffer.readLine()) != null) {
data.append(line + "\n");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (buffer != null) {
try {
buffer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return data.toString().split("\n");
}
}
我的产出如下:(只放2017-2018年的数据)
您可以将所有行存储到二维数组中,例如
data
:
StringBuilder sb = new StringBuilder(input);
int rows = sb.toString().split("\n").length;
int cols = sb.toString().split("\n").split(",").length;
String[] data = new String[rows][cols];
现在,数据的每一行
存储特定日期的值,日期位于索引0,即数据[0]
要访问每个日期的Buffalo数据,请在数据的行中创建一个循环,并提取每行索引4处的元素,即数据[i][4]
:
for(int i = 0; i < rows; i++)
{
System.out.println("The date is: "+data[i][0]);
System.out.println("Buffalo's average is: "+data[i][4]);
}
for(int i=0;i
就我个人而言,我会寻找一个好的CSV库/parsery如果您提到您当前的方法不起作用。你能给我们描述一下这种方法是什么吗?你的想法是什么?如何/在哪里失败?这种方法应该是有帮助的。一旦您能够以一种方便的方式获取数据,那么您就可以尝试在所需的时间段提取数据,方法是隔离几年或几个月
for(int i = 0; i < rows; i++)
{
System.out.println("The date is: "+data[i][0]);
System.out.println("Buffalo's average is: "+data[i][4]);
}