繁体   English   中英

如何拆分数组列表并获得正确的 output?

[英]How to split in an array list and get the correct output?

编写一个名为countStudentsPerFaculty的方法,该方法接受一个字符串作为输入,表示一个教师名称,并返回一个 integer 值,该值表示该教师中的学生人数。

例如:

如果注册 ArrayList 有[“John|FIT”,”Tim|Law”,”Emma|FIT”]

Input “FIT”
return 2,
Input “Law”
return 1,
Input “Business”
return 0

我是 Java 的初学者。 我已经使用了 .split() 方法来拆分数组中的字符串。 但我没有得到我想要的 output。

public int countStudentsPerFaculty(String facultyName) {
    int numberOfStudents = 0;

    for (String elem: enrollment) {
        String[] nameOfFaculty = elem.split("|");
        numberOfStudents++;
    }
    return numberOfStudents;
}

这是我的代码。 我的代码将每个教员的 output 返回为 3。我哪里出错了? 先感谢您。

您应该检查 nameOfFaculty 是否等于 FacultyName(method argument),然后将 numberOfStudents 添加一。 与以下相同:

public int countStudentsPerFaculty(String facultyName) {
        int numberOfStudents = 0;

        for (String elem: enrollment) {
            String nameOfFaculty = elem.split("\\|")[1];
            if(nameOfFaculty.equals(facultyName))
                numberOfStudents++;
        }
        return numberOfStudents;
    }

当您调用String.split(String regex)时,您会得到一个字符串数组。 例如,如果我采用第一个字符串"John|FIT" ,它将返回一个数组: {"John", "FIT"} 你没有对字符串数组进行任何操作,你得到了,所以 for 循环基本上是没用的。 您所做的只是获取数组中元素的数量,每次迭代数组中的字符串时,将numberOfStudents的值增加 1。 由于您的数组中有 3 个字符串, countStudentsPerFaculty返回 3。 @Zahra的回答给出了正确的代码,但我认为澄清工作很重要。


让我们以相同的字符串为例: "John|FIT" for 循环的第一条语句采用数组{"John", "FIT"}中的第二个字符串。 if 语句检查学院的名称,在这种情况下, "FIT"是否等于方法的参数。 如果是,则numberOfStudents加一。 此过程适用于注册中的所有字符串。 为了更清楚起见,您可以复制@Zahra的代码,并尝试调试它......


此外,正如@Eritrean所指定的,split() 方法的参数(“|”)应使用 2 个反斜杠(“\\|”)进行转义,因为它接受正则表达式字符串,如“|” 是一个特殊的正则表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM