Java 365天数据点按月每小时存储到阵列中

Java 365天数据点按月每小时存储到阵列中,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我已经将数据从excel扫描到Arraylist,但所有数据都包含在一个地方。我在上图中定义了截至12月31日7:30和8:30期间每天的数据。因此,每天将有2行。因此,365天*2个变量*8列数据。我需要将数据存储在不同的数组中,如第1个月(1月)第1-31天的数据。因为我已经计算了8列的平均值 try { ArrayList<String> GOCIds = new ArrayList<String>(); Workb

我已经将数据从excel扫描到Arraylist,但所有数据都包含在一个地方。我在上图中定义了截至12月31日7:30和8:30期间每天的数据。因此,每天将有2行。因此,365天*2个变量*8列数据。我需要将数据存储在不同的数组中,如第1个月(1月)第1-31天的数据。因为我已经计算了8列的平均值

try {
            ArrayList<String> GOCIds = new ArrayList<String>();

            Workbook workbook = WorkbookFactory.create(new File(SAMPLE_XLSX_FILE_PATH));
            for (Sheet sheet : workbook) {
                System.out.println("=> " + sheet.getSheetName());
            }
            Sheet sheet = workbook.getSheetAt(0);

            DataFormatter dataFormatter = new DataFormatter();
            System.out.println("Excel Data Loading....");
            for (Row row : sheet) {
                for (Cell cell : row) {
                    String tempValue = dataFormatter.formatCellValue(cell);
                    GOCIds.add(tempValue);
                }
            }
// allMonth
            for (int i = 0; i < masterData.size(); i = i + 11) {
                allMonth.add(masterData.get(i));
            }
            System.out.println("Total Month " + allMonth.size());
            // allDay
            for (int i = 1; i < masterData.size(); i = i + 11) {
                allDay.add(masterData.get(i));
            }
            System.out.println("Total Day " + allDay.size());
            // allTime
            for (int i = 2; i < masterData.size(); i = i + 11) {
                allTime.add(masterData.get(i));
            }
            System.out.println("Total Time " + allTime.size());
            // allDHI
            for (int i = 3; i < masterData.size(); i = i + 11) {
                allDHI.add(masterData.get(i));
            }
            System.out.println("Total DHI " + allDHI.size());
            // allDNI
            for (int i = 4; i < masterData.size(); i = i + 11) {
                allDNI.add(masterData.get(i));
            }
            System.out.println("Total DNI " + allDNI.size());
            // allGHI
            for (int i = 5; i < masterData.size(); i = i + 11) {
                allGHI.add(masterData.get(i));
            }
            System.out.println("Total GHI " + allGHI.size());
            // allDEW
            for (int i = 6; i < masterData.size(); i = i + 11) {
                allDEW.add(masterData.get(i));
            }
            System.out.println("Total DEW " + allDEW.size());
            // allTemperature
            for (int i = 7; i < masterData.size(); i = i + 11) {
                allTemperature.add(masterData.get(i));
            }
            System.out.println("Total Temperature " + allTemperature.size());
            // allPressure
            for (int i = 8; i < masterData.size(); i = i + 11) {
                allPressure.add(masterData.get(i));
            }
            System.out.println("Total Pressure " + allPressure.size());
            // allHumidity
            for (int i = 9; i < masterData.size(); i = i + 11) {
                allHumidity.add(masterData.get(i));
            }
            System.out.println("Total Humidity " + allHumidity.size());
            // allWS
            for (int i = 10; i < masterData.size(); i = i + 11) {
                allWS.add(masterData.get(i));
            }
            System.out.println("Total WS " + allWS.size());

            System.out.println("Data Loading Done ^_^");
试试看{
ArrayList GOCIds=新的ArrayList();
工作簿=WorkbookFactory.create(新文件(示例文件路径));
用于(工作表:工作簿){
System.out.println(“=>”+sheet.getSheetName());
}
工作表=工作簿。getSheetAt(0);
DataFormatter DataFormatter=新的DataFormatter();
System.out.println(“Excel数据加载…”);
用于(行:页){
用于(单元格:行){
字符串tempValue=dataFormatter.formatCellValue(单元格);
GOCIds.add(tempValue);
}
}
//整个月
对于(int i=0;i

您能指导我如何将每月每小时数据加载到8个不同的数组中,以便我可以轻松计算每个数组的平均值吗?

我认为首先您必须将所有数据从excel文件加载到模型中

public final class Data {
    private int month;    // [0:11]
    private int day;      // [1:31]
    private long time;
    private int dhi;
    private int dni;
    private int ghi;
    private int dewPoint;
    private double remperature;
    private double pressure;
    private double relativeHumidity;
    private double windSpeed;
}

public static List<Data> readDataFromExcel(Path xlsx) throws Exception {
    try(Workbook workbook = WorkbookFactory.create(Files.newInputStream(xlsx))) {
        List<Data> res = new ArrayList<>();
        
        for(Row row : workbook.getSheetAt(0)) {
            Data data = new Data();
            
            for(Cell cell : row) {
                // fill data
            }
            
            res.add(data);
        }
        
        return res;
    }
}
公共最终类数据{
私人整数月;//[0:11]
私人国际日;//[1:31]
私人时间长;
私人int dhi;
私人国际dni;
私人国际ghi;
露点;
私人双重报酬;
私人双重压力;
私人双重相对湿度;
私人双风速;
}
公共静态列表readDataFromExcel(路径xlsx)引发异常{
try(工作簿=WorkbookFactory.create(Files.newInputStream(xlsx))){
List res=new ArrayList();
对于(行:工作簿.getSheetAt(0)){
数据=新数据();
用于(单元格:行){
//填充数据
}
res.add(数据);
}
返回res;
}
}

然后,
列表
允许您按日期等计算结果或分组。

我尝试了多维数组和arraylist,但无法将数据按月存储在一个位置。有人可以帮助编写代码吗?似乎您首先应该正确地建模数据,并设计适当的类和对象来保存数据em。也可以查看日期和时间的表示。不确定,但您可能无意中应用了这一点。