如何使用java从二维数组中获取特定列

问题描述:

我在一个String二维数组中存储了96个变量。我想从中获得49个变量。 例如如何使用java从二维数组中获取特定列

variable1 variable2 variable3 variable4...... variable96 -> Original array : 97 variables 
    5   6   3   5 ......  6 
    6   8   8   1 ......  9 
    10  4   4   9 ......  1 
    .             . 
    .             . 
    .             . 
    2   ...   ...   ......  7 

我的目的:如果我选择45级的变量(例如变量1,variable3,variable6,...,variable86),那么我想使以下2D阵列。

variable1 variable3 variable6 ...... variable86 -> modified array: selected 45 variables 
    5   3   15  ......  2 
    6   8   21  ......  2 
    10  4   9  ......  6 
    .          . 
    .          . 
    .          . 
    2  ...   ...  ......  7 

我尝试使用下面的代码。但结果是null null null null null....

public static String[][] haveVariable(String[][] strArr){ 
    String[][] twoDArray = new String[strArr.length][strArr[0].length]; 
    int copy = 0; 
    for(int i=0; i<strArr.length;i++){ 
    if(strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="LSU_rO2Sig_mp[1]"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable" 
      ||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]==""||strArr[1][i]=="variable"||strArr[1][i]=="variable" 
      ||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable"||strArr[1][i]=="variable") 
    {  String tmp = null; 
      for(int j=0; j<strArr[1].length;j++){ 
       tmp= strArr[i][j]; 
       twoDArray[copy][j]=tmp; 
       System.out.println(tmp); 
      } 
      copy++; 
    } 
     } 
    return twoDArray; 
    } 

我修改代码。但结果是一样的...

public static String[][] haveVariable(String[][] strArr){ 
     String[] varName= {"variable1", "variable2", "variable3", "variable4"}; 
    int selectedVariable= 45;// number of original data's variable 
     String[][] twoDArray = new String[selectedVariable][strArr[0].length]; 
     int copy = 0; 
     for(int i=0; i<selectedVariable;i++){ 

      if(strArr[i][0].equals(varName)){ 

       for(int j=0; j<strArr[0].length;j++){ 

        String tmp= strArr[i][j]; 
        twoDArray[copy][j]=tmp; 
        copy++; 
      } 
     } 
    } 
     return twoDArray; 
} 

,但结果是same..i不知道是什么问题

+6

您正在使用==而不是equals()方法的功能! http://*.com/questions/7520432/what-is-the-difference-between-vs-equals-in-java –

+0

基本上,你想删除数组中的某一列? – AxelH

+0

是的, 我想删除我没有选择的列。 – kimHS

你不应该比较使用==,而不是你应该使用.equals()方法二串实例。

所以,在你的情况下,代码

strArr[1][i]=="variable" 

必须用

strArr[1][i].equals("variable") 

退房这个答案Comparing String in Java

+0

谢谢!我忘了。谢谢 – kimHS

+0

我修改了。但结果不变 – kimHS

只是为了一致性,我建议你忽略标签(varable1取代,variable2 ...)在一个对象内。 您的可变名称是您的标签。 给定一个2DArray,你知道每列指的是一个变量。 (你可以使用文档来指定这个)。

public static int[][] haveVariable(String[][] strArr, int selectedVariable){ 
    int[][] twoDArray = new int[selectedVariable][strArr[0].length]; 
    int copy = 0; 
    for(int i=0; i<selectedVariable;i++){ 
     for(int j=0; j<strArr[0].length;j++){ 
      tmp= strArr[i][j]; 
      twoDArray[i][j]=tmp; 
      System.out.println(tmp); 
     } 
    } 
    return twoDArray; 
} 
+1

变量在哪里比较?我做了一个更正,但结果并不好。 – kimHS

+0

[] 。 。 。 。 。 。 2 ... ... ...... 7 – Marco

+0

[ [1 ... 100], [1 ... 100], [1 ... 100], ] 你应该有这样的事情。你不需要String。 你知道colum1是变量1。 – Marco