java - 将 CSV 数据排序为多维数据,以便修改和保存数据
问题描述
我会尽量让这件事变得简单,因为我只是想着它就让自己感到困惑。
我有 data.csv 有 7 个逗号分隔值,它有 804 行。
例如:
10,100,1000,1,10,100,1050
10,130,1000,1,12,100,1040 etc
我的任务是创建一个基于 GUI Java 的程序,它执行以下任务;
1.读取 CSV,拆分行并存储到数组中(我觉得这点没问题)
一旦将数据存储到数组中,就必须对某些数据进行操作。例如;
查找 CSV 中所有“列”的平均值 - 查找所有列的最小值/最大值
将数据绘制成图(这个暂时可以忽略哈哈)
所以我真的很困惑如何正确地将我的数据存储到多维数组中,并且还能够操作数组的某些元素。我也需要帮助,因为我只是对是否应该专注于我的 GUI 感到困惑,例如创建一个将加载 csv 的按钮、一个将计算平均值的按钮等。
目前,我只有一个类正在打开文件(仅通过源文件夹)。逐行读取,并且(我认为)将其存储到数组中。
我不是在寻找任何人来握住我的手并为我彻底解决这个问题。但我真的可以得到一些帮助和指导,因为我认为我只是让自己更加困惑。强文本
每个“功能”的多个类会更有意义吗?例如,我有一个用于计算平均值的类,一个用于计算最小值/最大值等的类,如果这是正确的方法,那么如何最好地将其与 GUI 结合起来。`
很抱歉有这么多问题,非常感谢任何可以提供帮助的人!
public static void main(String[] args) throws IOException {
/////////DECLARING ARRAYS/VARIABLES//////
String line;
double year[] = new double [5000];
double month[] = new double [5000];
double tmax[] = new double [5000];
double tmin[] = new double [5000];
double af[] = new double [5000];
double rain[] = new double [5000];
double sun[] = new double [5000];
//////////////////////////////////////////
////////////READING THE FILE "SHEFFIELD DATA" *CHANGE TO JUST DATA FOR EASYNESS**//////////
BufferedReader file = new BufferedReader(new FileReader("sheffielddata.csv"));
//////////////////////////////////////////////////////////////////////////////////////////
///////////INDEXING THE ARRAY /////////////////
int index=0;
///////////////////////////////////////////////
////////LOOP TO ENSURE THE FILE READS EACH LINE/////////////////
while( (line = file.readLine()) != null){
///////////////////////////////////////////////////////////////
//////////APPLY THE SPLIF METHOD///////////////////////////////
String[] splits = line.split(","); //This will have total of 7 values
//////////////////////////////////////////////////////////////
//////////////ARRAY AND STRINGS///////////////////////
String name = splits[0];
int[] intArray = new int[7];
double value0 = Double.parseDouble(splits[0]);
double value1 = Double.parseDouble(splits[1]);
double value2 = Double.parseDouble(splits[2]);
double value3 = Double.parseDouble(splits[3]);
double value4 = Double.parseDouble(splits[4]);
double value5 = Double.parseDouble(splits[5]);
double value6 = Double.parseDouble(splits[6]);
year[index] = value0;
month[index] = value1;
tmax[index] = value2;
tmin[index] = value3;
af[index] = value4;
rain[index] = value5;
sun [index] = value6;
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
}//LOOP ENDS READING THE CSV FILE
解决方案
正如我所看到的,我很容易在这方面犯错,当我想到创建多个类时,我会为我试图封装的每个不同对象创建类。在您的情况下,您询问是否应该为每个计算创建一个不同的类。在您的情况下,我认为您可以在一个类中执行所有计算,但我会将这个类与您构建 GUI 的位置分开。
所以,如果是我,并且我正试图以一种简洁漂亮的方式完成这项任务,我将有以下课程:
1) 一个 InformationArray 类 - 在这个类中,我将创建执行必要计算的方法,并且这个类将包含我需要的任何变量。2) 包含读取 CSV 文件的方法的 FileReader 类。3) 一个 GUI 类,您可以在其中构建一个漂亮的窗格来使用。4) 包含您的主要方法/启动方法的驱动程序类。
我就是这样设置的。希望这有帮助。
推荐阅读
- node.js - Python3 flask_socketio 和节点。js 套接字。IO如何正确建立连接?
- html - 是否可以通过页面导航将 XML 拆分为多个 HTML 页面?
- php - 如何在 html_entity_decode() 之后计算字符串的总长度
- apache-kafka - S3 接收器记录字段 TimeBasedPartitioner 不起作用
- databricks - 使用 MongoDB-Atlas 配置 Databricks
- c++ - 如何从某些文件中读取并将它们的内容以不同的形式写入具有相同名称的文件中
- android - 改造自定义 HTML 响应正文解析
- javascript - 存在值时,Ionic 无法读取 null 的属性“xxx”
- boost-tuples - 从 boost::tuples::tuple 中检索字符串
- c# - 如何使用 jQuery 的 ajax 方法调用局部视图