我如何通过代码中的 ID 号创建搜索数据方法?

how can i create a search data method by the ID number from my code?

我怎样才能创建一个仅通过 ID 号的搜索方法,但它会显示全部内容?例如,结果数据(ID:123,姓名:Greg,工作:会计师,工作年限:5)。我只想通过输入 ID 号来搜索和显示该数据。如果我在搜索时输入不同的 ID 号,它的结果应该是“未找到”。

这是我的 java PersonnelData class 代码:

import java.util.Scanner;

public class PersonnelData {

static Personnel[] Pers = new Personnel[100];
    static int i = 0;
public static void main(String[] args) {

getMenu();

}

public static void getMenu() {


Scanner sc = new Scanner(System.in);
    while (true) {

    int select;
    System.out.println("1. Add Personnel Data");
    System.out.println("2. View Personnel Data");
    System.out.println("3. Search Personnel Data");
    System.out.println("0. Exit");
    select = sc.nextInt();

    switch (select) {
    case 1:
    addPers(Pers);

    break;
    case 2:
    viewPers(Pers);

    break;
    case 3:
    break;
    case 0:
    return;
    default:
    System.out.println("Invalid Option");
    }
}

}

public static void addPers(Personnel[] Pers) {
Scanner sc = new Scanner(System.in);
int IDnum, yearsAtWork;
String Name, job;

int addMore;

do {

    System.out.println("1. Enter Personnel ID: ");
    IDnum = sc.nextInt();
    sc.nextLine();
    System.out.println("2. Enter Personnel Name: ");
    Name = sc.nextLine();
    System.out.println("3. Enter Personnel Job: ");
    job = sc.nextLine();
    System.out.println("4. Enter Personnel Years at work: ");
    yearsAtWork = sc.nextInt();
    Pers[i] = new Personnel(IDnum, yearsAtWork, Name, job);
    ++i;

    System.out.println("To add another personnel data Press 1");
    addMore = sc.nextInt();
} while (addMore == 1);

}

public static void viewPers(Personnel[] Pers) {

for (Personnel element : Pers) {
    if (null != element) {
    System.out.println("1. Personnel ID: " + element.getIDnum());
    System.out.println("2. Personnel Name: " + element.getName());
    System.out.println("3. Personnel Job: " + element.getjob());
    System.out.println("4. Personnel years at work: " + element.getyearsAtWork() + "\n");
    }
}
    }
}

这是我的人员代码 class:

public class Personnel {

private int IDnum, yearsAtWork;
private String Name, job;

public Personnel(int IDnum, int yearsAtWork, String Name, String job) {

    this.IDnum = IDnum;
    this.yearsAtWork = yearsAtWork;
    this.Name = Name;
    this.job = job;

}


public int getIDnum() {
    return IDnum;
}

public void setIDnum(int IDnum) {
    this.IDnum = IDnum;
}

public int getyearsAtWork() {
    return yearsAtWork;
}

public void setyearsAtWork(int yearsAtWork) {
    this.yearsAtWork = yearsAtWork;
}

public String getName() {
    return Name;
}

public void setName(String Name) {
    this.Name = Name;
}

public String getjob() {
    return job;
}

public void setjob(String job) {
    this.job = job;
}

}

这是当我 运行 PersonnelData class:

时的结果
1. Add Personnel Data
2. View Personnel Data
3. Search Personnel Data
0. Exit
1
1. Enter Personnel ID: 
123
2. Enter Personnel Name: 
Greg
3. Enter Personnel Job: 
Accountant
4. Enter Personnel Years at work: 
5
To add another personnel data Press 1
1
1. Enter Personnel ID: 
12345
2. Enter Personnel Name: 
John
3. Enter Personnel Job: 
Salesman
4. Enter Personnel Years at work: 
8
To add another personnel data Press 1
2
1. Add Personnel Data
2. View Personnel Data
3. Search Personnel Data
0. Exit
2
1. Personnel ID: 123
2. Personnel Name: Greg
3. Personnel Job: Accountant
4. Personnel years at work: 5

1. Personnel ID: 12345
2. Personnel Name: John
3. Personnel Job: Salesman
4. Personnel years at work: 8

1. Add Personnel Data
2. View Personnel Data
3. Search Personnel Data
0. Exit
3
1. Add Personnel Data
2. View Personnel Data
3. Search Personnel Data
0. Exit
0

如您所见,当我按 3 时,“3. 搜索人员数据”没有任何作用。

添加一个视图方法以通过检查 id 遍历数组。

public static void view(int id) 
{
    for (Personnel element : Pers) 
    {
        if (element != null && element.getIDnum() == id) 
        {
            System.out.println("1. Personnel ID: " + element.getIDnum());
            System.out.println("2. Personnel Name: " + element.getName());
            System.out.println("3. Personnel Job: " + element.getjob());
            System.out.println("4. Personnel years at work: " + element.getyearsAtWork() + "\n");
            return;
        }
    }
    System.out.println("ID " + id + " not found!");
}

所以你的案例 3 将是

case 3:
System.out.println("Get results from element ID: ");
int elementSearchId = sc.nextInt();
view(elementSearchId);
break;

此外,我建议您在 class Personnel

重写 String#toString 方法
@Override
public String toString() {
    return String.format("ID: %s, Name: %s, Job: %s, Years at work: %s", getName(),getjob(),getyearsAtWork());
}

然后调用方法

if (element != null && element.getIDnum() == id)
   System.out.println(element.toString());

这里有一些可以提供帮助的 sudo 代码。关键是有一个控制值。我会使用 int 设置为 -1.

int control = -1

Use a `For-Loop` to loop though `Personnel`
    If personnel ID at a given index equal the ID you are searching for
        control = index
        break the loop

if control equal -1
    System.out.println("Not Found!!");
else    
    System.out.println("Name: " + personnel[control].getName() + "\tJob: " + personnel[control].getJob() + ...);