首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组中的数组:迭代不识别数组中的字符串

数组中的数组:迭代不识别数组中的字符串
EN

Stack Overflow用户
提问于 2019-05-05 23:52:46
回答 3查看 52关注 0票数 1

我很难读取2d数组中的元素。

要实现上下文化,用户提供如下输入:

代码语言:javascript
复制
7  
1
2
3 1 2
4 3
5 4
6 3
7 5 6

其中第一个数字是下一个输入的数目(在我的代码中为n)。每一个第一个数字都是一门课程,后面的数字是它的要求(课程也是如此)。例如,课程3需要课程1和2获得批准。

我需要计算2D数组中字符串的出现情况,但不考虑每个数组(list1i)的第一个元素。此外,第一行list1没有填充以使索引调用更容易(这就是为什么我的函数以i=1开头)。问题是它无法识别2d数组中的项,因此计数总是返回0。这是我的职责

代码语言:javascript
复制
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;
}

该函数实际上适用于定义如下的数组:

代码语言:javascript
复制
String[][] list1= {{null},{"1"},{"2"},{"3","1","2"},{"4","3"},{"5","4"},{"6","3"},{"7","5","6"}};

例如,count(list1,"1",7)返回1,count(list1,"3",7)返回2。

但是对于将输入保存为字符串(list2)的数组(据称与list1一样),计数返回0。

初始化2D数组list2的方式:

代码语言:javascript
复制
 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(" ");
            }

奇怪的是,如果调用一个数组或list2元素,它将返回应该返回的内容(例如,使用上面的输入,list23="3“、"1”、"2"),但函数就是不能工作。我在另一个家庭作业中也遇到了同样的问题,这与将数组添加到另一个数组有关,我无法解决这个问题,所以我改变了保存输入的方式,但现在由于限制,我别无选择。

如有任何帮助,将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-06 00:22:41

在Java中,==意味着用于对象比较的完全相同的对象。对于String对象,有方法equals,重写对象类等于()方法实现。

如果对象是字符串,而不是null,并且表示相同的字符序列,则equals方法返回true。

代码语言:javascript
复制
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;
}

如果等式不区分大小写,请使用if (list[i][j].equalsIgnoreCase(s))

票数 2
EN

Stack Overflow用户

发布于 2019-05-06 00:17:58

2问题:

1:数组是0索引的。从0开始循环,而不是1

2:使用.equals()比较字符串。不要对对象使用==,除非您知道自己在做什么

票数 1
EN

Stack Overflow用户

发布于 2019-05-06 00:14:24

尝试使用.equals()将矩阵中的值与字符串s而不是==运算符进行比较

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55997373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档