Java 数组中的数组:迭代不';我无法识别其中的字符串
我无法读取2d数组中的元素 要上下文化,用户提供如下输入:Java 数组中的数组:迭代不';我无法识别其中的字符串,java,arrays,iteration,2d,Java,Arrays,Iteration,2d,我无法读取2d数组中的元素 要上下文化,用户提供如下输入: 7 1 2 3 1 2 4 3 5 4 6 3 7 5 6 String[][] list1= {{null},{"1"},{"2"},{"3","1","2"},{"4","3"},{"5","4"},{"6","3"},{"7","5","6"}}; 其中第一个数字是下一个输入的数量(我的代码中为n)。接下来的每一个数字都是一门课程,后面的数字也是它的要求(课程)。例如,课程3需要课程1和课程2获得批准 我需要计算2D数组中
7
1
2
3 1 2
4 3
5 4
6 3
7 5 6
String[][] list1= {{null},{"1"},{"2"},{"3","1","2"},{"4","3"},{"5","4"},{"6","3"},{"7","5","6"}};
其中第一个数字是下一个输入的数量(我的代码中为n)。接下来的每一个数字都是一门课程,后面的数字也是它的要求(课程)。例如,课程3需要课程1和课程2获得批准
我需要计算2D数组中字符串的出现次数,但不考虑每个数组的第一个元素(list1[I][0])。此外,第一行list1[0]没有被填充以使索引调用更容易(这就是为什么我的函数以i=1开头)。
问题是它无法识别2d数组中的项,因此计数始终返回0。这是我的职责
static int count(String[][] list, String s, int n) { //n is the number of rows
int x=0;
for (int i=1;i<=n;i++) {
for (int j=1;j<list[i].length;j++) {
if (list[i][j]==s) {
x++;
}
}
}
return x;
}
其中,例如,count(列表1,“1”,7)返回1,count(列表1,“3”,7)返回2
但是对于输入保存为字符串的数组(list2),应该与list1一样,计数返回0
我初始化2D数组列表2的方式:
String[][] list2 = new String[n+1][];
String[] L1 = new String[n+1]; //just an auxiliary array
for (int j=1; j<=n; j++) {
list2[j] = new String[n+1];
L1[j] = sc.nextLine();
list2[j] = L1[j].split(" ");
}
String[]list2=新字符串[n+1][];
字符串[]L1=新字符串[n+1]//只是一个辅助阵列
对于(int j=1;j请尝试使用.equals()将矩阵中的值与字符串s进行比较,而不是==运算符2问题:
1:数组是0索引的。从0
开始循环,而不是1
2:使用.equals()
来比较字符串。除非您确切知道自己在Java上做什么,否则不要对对象使用=
,表示对象比较的对象完全相同。对于字符串
对象,存在方法equals
,覆盖对象类equals()方法实现
equals
如果对象是字符串,则返回true,而不是null,并表示相同的字符序列
static int count(String[][] list, String s, int n) { //n is the number of rows
int x=0;
for (int i=1;i<=n;i++) {
for (int j=1;j<list[i].length;j++) {
if (list[i][j].equals(s)) {
x++;
}
}
}
return x;
}
static int count(String[][]列表,String s,int n){//n是行数
int x=0;
对于(int i=1;iOne)来说,一个值得注意的问题是,您将字符串与=
进行比较,而不是与.equals()
进行比较。非常感谢!我花了很多时间试图弄清楚这一点,但从未想过这是我比较字符串的方式