2016-12-01 4 views
1

検索された値が配列に存在する場合は、列を選択して保存します。私は列の下x==1||x==4 を含む列は、私はコードの下Javaを使用して2D配列の特定の列を取得する方法

1 4 
A D 
G J 

何をしたいの結果になるようにしたいの例

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

ため は私の2D配列のコードです。私はcsvファイルと2D配列から1D配列を作成します。検索された値が存在する場合は、列を選択して保存します。

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]を1行にコピーして列を取得することができます。 – AxelH

答えて

1

2D配列の行を通過して、必要な列を選択できます。

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で始まる列を持つこともできます。その場合、最初の行に数字があり、残りがアルファベット順である場合。あなたは、あなたが望むどの列を知っているだろう、とあなたが欲しいの列を持つ2次元配列を作成するために、私の答えにコードの2番目の部分を使用することができる場合は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 
関連する問題