2014-11-04 129 views
0

在確定多維數組的特定列中的元素不是數字後,我正在查看交換此多維數組的兩列。多維數組列交換

基本上我想在確定列6中的元素是否爲數字之後,將列4的內容與列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 2014-11-04 12:47:45

回答

0

您的循環出現問題。在迭代中,col == 6覆蓋您之前已經設置的值(當col爲4時)的值sortedUsageStatsData[row][6]

有改變這幾個方面,我將其命名爲二:

  1. 迭代從0到只有5:for (int col = 0; col < 6; col++)。 4 6列和在相應的迭代

  2. 設置值:

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

這對你有幫助嗎? @ TokTok123 – User42 2014-11-13 12:13:26