比较字符串名称和数组int []的名称

时间:2019-01-11 12:21:47

标签: java

我有一个矩阵,它有两行一列。每行都有特定的名称,例如row0row1。我在此矩阵的每一行和每一列中添加了一些数字。例如,我有字符串index,它可以获取行名之一(row0row1)。如何检查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]);

2 个答案:

答案 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;
  }
}

以上所有只是一个示例。您可以根据需要实现它。

希望有帮助。