我将尝试尽可能简单地做到这一点,因为我只是在思考它而感到困惑。
我有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
答案 0 :(得分:0)
正如我所看到的那样,我对这个问题持开放态度,当我想到创建多个类时,我会为我试图封装的每个不同对象创建类。在您的情况下,您询问是否应为每个计算创建不同的类。在您的情况下,我认为您可以在一个类中执行所有计算,但我会将此类与构建GUI的位置分开。
所以,如果是我和我试图以一种整洁而漂亮的方式完成这项任务,我会有以下课程:
1)一个InformationArray类 - 在这个类中,我将创建执行必要计算的方法,这个类将包含我需要的任何变量。 2)FileReader类,其中包含用于读取CSV文件的方法。 3)一个GUI类,您可以在其中构建一个漂亮的窗格以供使用。 4)包含主方法/启动方法的Driver类。
我就是这样设置的。希望这有帮助。