我有一个矩阵,它有两行一列。每行都有特定的名称,例如row0
和row1
。我在此矩阵的每一行和每一列中添加了一些数字。例如,我有字符串index
,它可以获取行名之一(row0
或row1
)。如何检查index == "row0"
是否随后打印row0[1]
和index == "row1"
然后是否打印row1[1]
??
int[][] s = new int[2][3];
s[0][0] = 5;
s[0][1] = 10;
s[0][2] = 15;
s[0][1] = 25;
s[1][1] = 30;
s[2][1] = 45;
int[] row0 = new int[]{s[0][0], s[0][1], s[0][2]};
int[] row1 = new int[]{s[0][1], s[1][1], s[2][1]};
String index = "row0";
// if index= row0
System.out.println(row0[1]);
// if index=row1
System.out.println(row1[1]);
答案 0 :(得分:3)
在您的示例中,可能有问题:
int[][] s = new int[2][3]; // two rows, three cols
s[0][0] = 5;
s[0][1] = 10;
s[0][2] = 15;
s[0][1] = 25;
s[1][1] = 30;
s[2][1] = 45; // <---- 2 is out of bounds
int[] row0 = new int[]{s[0][0], s[0][1], s[0][2]};
int[] row1 = new int[]{s[0][1], s[1][1], s[2][1]};
无论如何,您可以将Map用于矩阵,然后使用String寻址行:
// ...code for s here..
Map<String, Integer[]> matrix = new HashMap<String, Integer[]>();
matrix.put("row0", new Integer[] {s[0][0], s[0][1], s[0][2]});
matrix.put("row1", new Integer[] {s[0][1], s[1][1], s[2][1]});
String index = "row0";
// if index= row0
System.out.println(matrix.get(index)[1]); // row0[1]
// if index=row1
index = "row1";
System.out.println(matrix.get(index)[1]); // row0[1]
答案 1 :(得分:0)
您无法使用list.SelectMany(x => x.SelectMany(y => y)).ToList();
运算符检查String对象的相等性。
您必须改用==
。简要说明了这个问题,在StackOverflow和this answer中已经多次提出。
您想要做的是这样的:
.equals()
我们解决了这个问题。
现在,您说您不想对此进行硬编码,我完全理解。
因此,如果我在您的位置,我将为此创建一个新类。即使对于一个初学者来说,它确实非常简单容易。
final String ARRAY_NAME1 = "row0";
final String ARRAY_NAME2 = "row1";
String index = "row0";
if(index.equals(ARRAY_NAME1))
System.out.print(row0[1]);
else if((index.equals(ARRAY_NAME2))
System.out.print(row1[1]);
然后在您的代码中,您可以执行以下操作:
//class can be named anything. (As long as it is meaningful)
public class IntegerArrayIdentity{
/*This class will have two variables.
A name, for comparison operations and
the integer array that it will represent.*/
public String name;
public int[] array;
/*Simple constructor. Takes the name and array as its parameters.
You can change it to only take a name as a parameter, in case
that you want to initialise the array later. Add new methods as you like*/
public IntegerArrayIdentity(String name, int[] array){
this.name = name;
this.array = array;
}
}
以上所有只是一个示例。您可以根据需要实现它。
希望有帮助。