gpt4 book ai didi

java - 使用startsWith() 搜索数组

转载 作者:行者123 更新时间:2023-12-02 04:18:02 26 4
gpt4 key购买 nike

我正在寻找一些使用startsWith()在数组中搜索的帮助。

我希望用户输入名字,搜索数组,如果名字匹配,则打印:员工 ID 号、姓氏、名字。

如果没有匹配项,则返回一条简单的错误消息。

下面的代码搜索数组,打印匹配的员工,但也继续打印错误消息,直到循环整个数组。

当前输出:

ID No: 2345 - Holt, Steve
ID No: 2345 - Molt, Steve
ID No: 2345 - Sholt, Steve
ID No: 2345 - Colt, Steve
No Matching employee records found!
No Matching employee records found!
No Matching employee records found!
No Matching employee records found!
...

如何将其更改为仅返回匹配项,或者如果不匹配,则仅返回错误消息。

感谢您的帮助!

private static final Service [] employeeList = new Employee [10];
private static final Scanner scanner = new Scanner(System.in);

public static void main(String[] args){

// First name / Last name / Employee Number

final Employee FakeEmployee0 = new Employee("Steve", "Holt", "2345");
final Employee FakeEmployee1 = new Employee("Steve", "Molt", "2111");
final Employee FakeEmployee2 = new Employee("Steve", "Sholt", "245");
final Employee FakeEmployee3 = new Employee("Steve", "Colt", "2222");
final Employee FakeEmployee4 = new Employee("Steve", "Wolt", "25");
final Employee FakeEmployee5 = new Employee("Boy", "Blue", "1");
final Employee FakeEmployee6 = new Employee("Boy", "Wonder", "8999");
final Employee FakeEmployee7 = new Employee("Boy", "George", "500");
final Employee FakeEmployee8 = new Employee("Will", "Smith", "123");
final Employee FakeEmployee9 = new Employee("Will", "Ferret", "23");

employeeList [0] = FakeEmployee0;
employeeList [1] = FakeEmployee1;
employeeList [2] = FakeEmployee2;
employeeList [3] = FakeEmployee3;
employeeList [4] = FakeEmployee4;
employeeList [5] = FakeEmployee5;
employeeList [6] = FakeEmployee6;
employeeList [7] = FakeEmployee7;
employeeList [8] = FakeEmployee8;
employeeList [9] = FakeEmployee9;

// Search for employees by first name:

private static void searchNames(){

System.out.println("Enter employee's first name: ");
String nameCheck = sc.nextLine();


for (int i = 0; i < employeeList.length; i++){
if (employeeList[i].getFirstName().startsWith(nameCheck)){
System.out.println("ID No: " + employeeList[i].getIdNum() + " - "
+ employeeList[i].getLastName() + " " +
employeeList[i].getFirstName());
}

else {
System.out.println("No Matching employee records found!");
}
}
}

最佳答案

问题出现在您的for循环中。您实际上是在为每个员工打印与您的描述不符的错误消息。

要解决这个问题,您可以简单地使用一个 boolean 标志,调用empFound,它最初设置为false。当您检查员工时,如果找到匹配项,则只需将 empFound 设置为 true 并打破循环即可。

for 循环之外,当且仅当 empFoundfalse 时才显示错误消息。

正如 @vvs 所指出的,一旦您找到匹配项,此处提出的解决方案就会停止,也就是说,它最多会产生 1 个命中。如果您想列出以您所在字符串开头的所有员工,只需省略 break 语句即可。这将导致循环继续进行并检查所有员工元素。

关于java - 使用startsWith() 搜索数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33096486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com