【发布时间】:2021-01-10 15:18:38
【问题描述】:
我开始使用 Java,我正在创建一个基本的电话簿应用程序。
我想实现一个“搜索联系人”函数,该函数在联系人的 ArrayList 中进行搜索,并使用 for each 循环和 if 语句返回与用户输入的字符串匹配的联系人数量。
问题是,是否可以接收与用户搜索输入相匹配的联系人计数,而无需先定义一个 int - 例如 int counter = 0; - 然后在 if 语句中更新它?
以下是我所知道的唯一可以计算匹配联系人数量的方法示例:
int counter = 0;
System.out.println("Please enter name of contact: ");
String nameRequest = scanner.nextLine();
for (Contact c: contactList) {
if (nameRequest.equals(c.getName())){
counter++;
System.out.println(counter + " contact(s) found"
System.out.println("Name: " + c.getName());
}
}
附加:我该怎么做才能使代码也返回仅部分匹配的联系人?例如用户输入“Michael”,但没有仅包含“Michael”的联系人。但是,我希望在部分比赛中返回名为“Michael B Jordan”和“Michael Schumacher”的联系人。
提前致谢!
【问题讨论】:
-
计数器变量几乎是执行此类操作的标准方法。对于部分匹配,请检查字符串方法
contains、startsWith和toLowerCase。 -
您也可以过滤 ArrayList(参见 stackoverflow.com/questions/122105/…),然后检查过滤后列表的长度,但要注意这些看起来很漂亮,但对于较大的列表可能会很昂贵。