2014-11-04 2 views
0

После определения того, что элементы в определенном столбце многомерного массива не являются числами, я рассматриваю замену двух столбцов этого многомерного массива.Обмен столбцами многомерных массивов

В основном я хотел бы поменять содержимое столбца 4 на столбцы 6 после определения того, являются ли элементы в столбце 6 числами или нет, если элементы в столбце 6 не являются числами, а затем создают новый массив и начинают вставлять содержимое старого массива в новом массиве, но как только столбец попадает в 4-й столбец старого массива, он помещает этот элемент в 6-й столбец нового массива и наоборот.

Ниже приведена моя попытка относительно вышеуказанного. Мне удалось успешно определить, являются ли элементы в моем столбце 6 числами или нет. Теперь у меня есть сомнения относительно логику замены элементов в колонке 4 с теми, в 6

//!< 
public String[][] sortedByDateUsageStatsData(String[][] unsortedUsageStatsData) { 
    System.out.println("\nbtnUsageStats - sortedByDateUsageStatsData(String[][] unsortedUsageStatsData)"); 

    for (int row = 0; row < unsortedUsageStatsData.length; row++) { 
     for (int col = 0; col < 7; col++) { 
      //System.out.println("unsortedUsageStatsData[" + row + "][" + col + "] => " + unsortedUsageStatsData[row][col]); 
     } 

     // Check if content in return code column i.e. column 6 is number or a string. 
     // If a string then swap column 4 content with column 6 and pass this array with swapped columns as the final array 
     if(!isNumericString(unsortedUsageStatsData[0][6])) { 
      //System.out.println("unsortedUsageStatsData[0][6] is NOT a number i.e. " + unsortedUsageStatsData[0][6]); 

      break; 
     } 

     System.out.println("\n"); 
    } 

    System.out.println("\nExited for loop as unsortedUsageStatsData[0][6] is NOT a number\n"); 

    sortedUsageStatsData = new String[unsortedUsageStatsData.length][7]; 

    for (int row = 0; row < unsortedUsageStatsData.length; row++) { 
     for (int col = 0; col < 7; col++) { 
      //System.out.println("\nBefore swap unsortedUsageStatsData[" + row + "][" + col + "] => " + unsortedUsageStatsData[row][col]); 

      sortedUsageStatsData[row][col] = unsortedUsageStatsData[row][col]; 

      if(col == 4) { 
       System.out.println("\nBefore swap sortedUsageStatsData[" + row + "][6] => " + unsortedUsageStatsData[row][6]);      
       sortedUsageStatsData[row][6] = unsortedUsageStatsData[row][4]; 
       System.out.println("\nAfter swap sortedUsageStatsData[" + row + "][6] => " + unsortedUsageStatsData[row][6]);      

       sortedUsageStatsData[row][4] = unsortedUsageStatsData[row][6]; 
       System.out.println("\nAfter swap sortedUsageStatsData[" + row + "][4] => " + unsortedUsageStatsData[row][4]);      
      } 

      System.out.println("\nAfter swap sortedUsageStatsData[" + row + "][" + col + "] => " + unsortedUsageStatsData[row][col]); 
     } 

     System.out.println("\n"); 

    } 

    return sortedUsageStatsData; 
} 

Любая помощь приветствуется.

+0

Это звучит как шлам данных попрошайничества для некоторой структуры. – chrylis

ответ

0

У вас возникла проблема с вашей петлей. На итерации, где col == 6 вы переопределяете значение sortedUsageStatsData[row][6], которое вы уже установили раньше (когда col было 4).

Есть несколько способов, чтобы изменить это, я назову два:

  1. Итерация от 0 до 5 только: for (int col = 0; col < 6; col++).

  2. Установка значение столбцов 4 и 6 в соответствующих итерациях:

    if(col == 4) { 
         sortedUsageStatsData[row][4] = unsortedUsageStatsData[row][6]; 
        } else if (col == 6) { 
         sortedUsageStatsData[row][6] = unsortedUsageStatsData[row][4]; 
        } 
    
+0

Помогло ли это вам? @ TokTok123 – User42

Смежные вопросы