[英]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.