for (int a = 0; a < noofvisitors; a++) {
String visitorname = Helper.readString("\nEnter visitor name > ");
for (int j = 0; j < visitorList.size(); j++){
if (visitorname.equalsIgnoreCase(visitorList.get(j).getVname())) {
System.out.println("\n*** Visitor already regisitered ***");
} else {
String visitornric4 = Helper.readString("Enter visitor last 4 alphanumeric digit of nric > ");
int visitorcontact = Helper.readInt("Enter visitor contact > ");
String date = Helper.readString("Enter visiting date > ");
Visitor visitorinfo = new Visitor(visitorname, visitornric4, visitorcontact, date, patientname);
visitorList.add(visitorinfo);
visitorinfo.displayvisitorinfo();
System.out.println("\n*** Visitor is regisitered successfully ***");
patientList.get(i).setVisitorCount(noofvisitors);
System.out.println("\n*** Please proceed to ward ***");
我正在尝试让它输出"\n*** Visitor already regisitered ***
2条答案
按热度按时间k4emjkb11#
在判断
visitorname
是否已经存在之前,需要将输入的visitorname
与visitorList
中的所有名称进行比较,因此您的循环是不正确的。您可以更改逻辑,首先遍历所有元素,只有在没有找到匹配项时才继续添加新的Visitor
,但这不会非常有效。如果您将访问者
List
替换为HashMap<String,Visitor>
,效率会高得多。然后你可以检查一个访问者名字是否已经在预期的恒定时间内存在(而不是循环所需的线性时间):
tyky79it2#
在决定用户是否已经注册之前,您需要迭代整个列表。
或者,更简单地说:
然后您可以决定要做什么: