Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组中的数组:迭代不';我无法识别其中的字符串_Java_Arrays_Iteration_2d - Fatal编程技术网

Java 数组中的数组:迭代不';我无法识别其中的字符串

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数组中

我无法读取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()
进行比较。非常感谢!我花了很多时间试图弄清楚这一点,但从未想过这是我比较字符串的方式