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

Java 比较字符串名称和数组名称int[],java,Java,我有一个矩阵,它有两行一列。每行都有特定的名称,例如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]

我有一个矩阵,它有两行一列。每行都有特定的名称,例如
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]);

不能使用
=
运算符检查字符串对象的相等性。 您必须改用
.equals()
。这个问题在StackOverflow中被问了很多次,并简要地解释了它

你想做的事情是这样的:

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;
  }
}
然后在代码中,您可以执行以下操作:

int[] row0 = {8, 3, 5, 143, 27, 0};
IntegerArrayIdentity row0id = new IntegerArrayIdentity("row0", row0); 

if(index.equals(row0id.name))
  System.out.println(row0id.array[1]);



output -> '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]};
int[]s=newint[2][3];//两排,三匹
s[0][0]=5;
s[0][1]=10;
s[0][2]=15;
s[0][1]=25;
s[1][1]=30;

[2][1]=45;//你想干什么?是否应该尝试与第0[1]行中的值进行比较?如下所示:int index=10;if(row0[1]==index){//do somthing};我清楚地提到过。如果比较两个值,您需要使用“==”而不是“=”,可能这是您的错误?您可以这样做:
If(index.equals(“row0”){System.out.println(row0[1])
。您正在比较
字符串
s,它们是对象而不是原语,因此请使用
equals
方法。使用
映射()
可能比我自己的答案更有效。+1
// ...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]