繁体   English   中英

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

[英]how to get specific column from 2D array using java

我将96个变量存储在String 2D数组中。 我想从中获取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;
}

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

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

因此,在您的情况下,代码

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

必须替换为

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

看看这个答案Java比较字符串

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM