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]