如何使用java从2D数组中获取特定列

时间:2016-12-02 10:55:56

标签: java arrays

我在String 2D数组中存储了96个变量。我想从中获得49个变量。 例如

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个变量(例如variable1,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;
}

但结果是一样的......我不知道是什么问题

2 个答案:

答案 0 :(得分:2)

您不应使用==比较两个字符串实例,而应使用.equals()方法。

所以,在你的情况下代码

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

必须替换为

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

查看此答案Comparing String in Java

答案 1 :(得分:0)

为了保持一致性,我建议你忽略一个对象内的标签(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;
}