JAVA - не в состоянии правильно заполнить многомерный массив из другого массива - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть строка значений, разделенных запятыми, которые я преобразовал в массив, который я затем собирался использовать для создания 2D-массива.При создании цикла для добавления данных из первого массива в 2D-массив он повторяет данные.

Вывод, который я получаю:

4428,40,401,610,2016, 3821,31,347,572,2015,4381,38,341,520,2014,2536,17,193,290,2013,4295,39,371,552,2012,4643,45,343,502,2011,3922,28,312,475,2010,4434,30,350,541,2009,4038,28,341,536,2008,218, 1,20,28,2007,46,0,6,15,2006,65,0,9,16,2005,4428,40,401,610,2016,3821,31,347,572,2015,4381,38,341,520,2014,2536,17,193,290, 2013,4295,39,371,552,2012,4643,45,343,502,2011,3922,28,312,475,2010,4434,30,350,541,2009,4038,28,341,536,2008,218,1,20,28,2007,46,0,6,15, 2006,65,0,9,16,2005,4428,40,401,610,2016,3821,31,347,572,2015,4381,38,341,520,2014,2536,17,193,290,2013,4295,39,371,552,2012,4643,45,343,502,2011,3922, 28,312,475,2010,4434,30,350,541,2009,4038,28,341,536,2008,218,1,20,28,2007,46,0,6,15,2006,65,0,9,16,2005,4428,40,401,610, 2016,3821,31,347,572,2015,4381,38,341,520,2014,2536,17,193,290,2013,4295,39,371,552,2012,4643,45,343,502,2011,3922,28, 312,475,2010,4434,30,350,541,2009,4038,28,341,536,2008,218,1,20,28,2007,46,0,6,15,2006,65,0,9,16,2005,4428,40,401,610, 2016,3821,31,347,572,2015,4381,38,341,520,2014,2536,17,193,290,2013,4295,39,371,552,2012,4643,45,343,502,2011,3922,28,312,475,2010,4434,30,350,541,2009,4038,28,341,536,2008, 218,1,20,28,2007,46,0,6,15,2006,65,0,9,16,2005

и правильный вывод должен быть:

4428,40,401,610,2016,3821,31,347,572,2015,4381,38,341,520,2014,2536,17,193,290,2013,4295,39,371,552,2012,4643,45,343,502,2011,3922,2010,4441,750,201,4434,3050, 2009,4038,28,341,536,2008,218,1,20,28,2007,46,0,6,15,2006,65,0,9,16,2005

Ожидаемые результаты:

{{4428,40,401,610,2016}

{3821,31,347,572,2015}

{4381,38,341,520,2014}

...} и так далее, каждые 5

Мой код для добавления массива в 2D-массив приведен ниже:

 {String[] columns = {"Yards","Touchdowns","Attempts","Incompletions","Year"};



String[] data1 = results1.split(",");

Object [][] data11 = new Object[columns.length][data1.length];
for(int i = 0; i<columns.length;i++){
    for(int j = 0; j<data1.length;j++){
    data11[i][j] = data1[j];
    //System.out.print(data11[i][j]+",");
}
}}

РЕДАКТИРОВАТЬ: Решение!

Object [][] data11 = new Object[data1.length/columns.length][columns.length];
int column = -1;
for(int j = 0; j<data1.length;j++){
    if(j % columns.length == 0) column = column+1;
            data11[column][j % 5] = data1[j];
}

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Может быть, эта работа для вас:

Object [][] data11 = new Object[columns.length][data1.length / 5];
int column = -1;
for(int j = 0; j<data1.length;j++){
    if(j % 5 == 0) column = column + 1
    data11[j % 5][column] = data1[j];
}

Обратите внимание, что размер матрицы изменился и назначение тоже.Еще не пробовал, возможно, вы можете сделать красивую версию.Надеюсь, это поможет!

0 голосов
/ 07 декабря 2018

Вы также зацикливаете первый массив (i), поэтому он будет повторять его.Просто напишите это:

 data11[0][j] = data1[j];

Или даже не делайте первый цикл вообще, в зависимости от того, что вам нужно.Предполагая вывод, вы хотите заполнить только первую позицию (0) массива.

...