我如何通过代码中的 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() + ...);
我怎样才能创建一个仅通过 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() + ...);