2016-12-01 388 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 
相关问题