将CSV数据排序为多维,以便可以修改和保存数据

时间:2018-05-17 22:02:39

标签: java arrays csv user-interface multidimensional-array

我将尝试尽可能简单地做到这一点,因为我只是在思考它而感到困惑。

我有data.csv,它有7个逗号分隔值,它有804行。

例如:

10,100,1000,1,10,100,1050 
10,130,1000,1,12,100,1040 etc

我的任务是创建一个基于GUI Java的程序,它执行以下任务;

1.读取CSV,拆分行并存储到数组中(想想这个位好吧)

  1. 将数据存储到数组后,必须操纵某些数据。例如;

  2. 查找所有'列的平均值'在CSV中 - 查找所有列的最小值/最大值

  3. 将数据绘制成图表(暂时可以忽略这个哈哈)

  4. 所以我真的很困惑如何正确地将我的数据存储到多维数组中,并且还能够操纵数组的某些元素。我也需要帮助,因为我很困惑我是否应该专注于我的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
    

1 个答案:

答案 0 :(得分:0)

正如我所看到的那样,我对这个问题持开放态度,当我想到创建多个类时,我会为我试图封装的每个不同对象创建类。在您的情况下,您询问是否应为每个计算创建不同的类。在您的情况下,我认为您可以在一个类中执行所有计算,但我会将此类与构建GUI的位置分开。

所以,如果是我和我试图以一种整洁而漂亮的方式完成这项任务,我会有以下课程:

1)一个InformationArray类 - 在这个类中,我将创建执行必要计算的方法,这个类将包含我需要的任何变量。 2)FileReader类,其中包含用于读取CSV文件的方法。 3)一个GUI类,您可以在其中构建一个漂亮的窗格以供使用。 4)包含主方法/启动方法的Driver类。

我就是这样设置的。希望这有帮助。