2016-12-01 385 views
1

當數組中存在搜索值時,我選擇該列並保存它們。 例如如何使用java獲取二維數組中的特定列

1 2 3 4 5 6 
A B C D E F 
G H I J K L 

我想打一列包括x==1||x==4 下面列將是什麼,我想

1 4 
A D 
G J 

下面的代碼是我的二維陣列碼的結果。我從csv文件和2D數組創建一維數組。當搜索值存在時,我選擇該列並保存它們。

String str = readCSV(new File("D:/sample_folder/sample1.csv")); 
    String[] strArr = parse(str); // It comes out in a row in an String array. 
    int varNumber = 45; 
    int rowNumber = strArr.length/varNumber; 

    String[][] Array2D = new String[varNumber][rowNumber]; 

    for(int j=0;j<varNumber;j++) 
    { 
     for(int i=0; i<rowNumber;i++) 
      { 
       String k = strArr[i*varNumber+j]; 
         Array2D[j][i]= k; 
     } 
    }      //make 2D array   
+0

你有沒有嘗試在處理這個問題你自己?如果是這樣,請將代碼粘貼到此處:)如果不嘗試自己並在獲取錯誤和研究無效時詢問更具體的問題。 – geisterfurz007

+0

你的csv格式是什麼?旋轉你的數組會很有趣。這樣,您就可以通過在一行中複製Array2d [i]來獲得列。請舉個例子來運行這個 – AxelH

回答

1

你可以通過二維數組的行並選擇你想要的列。

for(int j=0;j<rowNumber;j++) 
{ 
    // index starts from 0 
    yourArray[j][0] = array2D[j][0]; 
    yourArray[j][1] = array2D[j][3]; 
} 

或多個動態,你可以寫:

int[] columnsYouWant = {0, 3}; 
for(int j=0;j<rowNumber;j++) 
{ 
    for(int c=0;c<columnsYouWant.length;c++) 
    { 
     yourArray[j][c] = array2D[j][columnsYouWant[c]]; 
    } 
} 

如果你想如果(X == 1 || X == 4)使用方法:

for(int j=0;j<rowNumber;j++) 
{ 
    column = 0; 
    for(int c=0;c<columnNumber;c++) 
    { 
     x = c + 1; 
     if (x == 1 || x == 4) 
     yourArray[j][column++] = array2D[j][c]; 
    } 
} 

我可能會它錯了。它也似乎你可能想要有1或4開始列。在這種情況下,如果你的第一行有數字,其餘是按字母順序。你會發現開始的列1或4

for(int j=0;j<colNumber;j++) 
{ 
    x = array2d[0][j]; 
    if (x == 1 || x == 4) { 
     // add you j to an array 
    } 
} 

在,你會知道你想要的列的情況下,你可以使用第二一段代碼在我回答你想要的列上創建二維數組。

+0

我想用'if(x == 1 || x == 4)' – kimHS

0

試試這個模擬,我在你的2DArray填充此:

1 2 3 4 5 6 
A B C D E F 
G H I J K L 

在那之後,我做了一個代碼只打印列14

public static void main(String[] args) { 
    String[][] twoDArray = populateArray(); 
    int x = 0; 
    for (int i = 0; i < twoDArray.length; i++) { 
     for (int j = 0; j < twoDArray[0].length; j++) { 
      x = j + 1; 
      if(x == 1 || x == 4) { 
       System.out.print(twoDArray[i][j]); 
      } 
     } 
     System.out.println(); 
    } 

} 

public static String[][] populateArray() { 
    String[][] twoDArray = new String[3][6]; 
    for (int i = 0; i < twoDArray[0].length; i++) { 
     twoDArray[0][i] = (i + 1) + ""; 
    } 
    char alphaChar = 'A'; 
    for (int i = 1; i < twoDArray.length; i++) { 
     for (int j = 0; j < twoDArray[0].length; j++) { 
      twoDArray[i][j] = String.valueOf(alphaChar); 
      alphaChar++; 
     } 
    } 
    return twoDArray; 
} 

代碼的輸出是:

14 
AD 
GJ 

,如果你發表意見if(x == 1 || x == 4) {,我用,它將打印這樣的:

123456 
ABCDEF 
GHIJKL 
相關問題