我在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;
}
但结果是一样的......我不知道是什么问题
答案 0 :(得分:2)
您不应使用==
比较两个字符串实例,而应使用.equals()
方法。
所以,在你的情况下代码
strArr[1][i]=="variable"
必须替换为
strArr[1][i].equals("variable")
答案 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;
}