Java 在数组中按姓氏搜索
我制作了一个包含三个类的联系人列表,ContactList类包含一个数组,其中存储姓氏、名字、街道、城市、州、邮政编码、国家、电子邮件、电话号码和便笺 我想在ContactList类中实现一个按姓氏搜索的功能,在该功能中,它显示了具有用户搜索的姓氏的联系人的所有信息,但我似乎找不到任何有用的信息:(Java 在数组中按姓氏搜索,java,arrays,search,Java,Arrays,Search,我制作了一个包含三个类的联系人列表,ContactList类包含一个数组,其中存储姓氏、名字、街道、城市、州、邮政编码、国家、电子邮件、电话号码和便笺 我想在ContactList类中实现一个按姓氏搜索的功能,在该功能中,它显示了具有用户搜索的姓氏的联系人的所有信息,但我似乎找不到任何有用的信息:( import java.util.*; 公共类联系人列表{ //数组及其属性的声明 私有最终整数大小=10; 私人[]名单; private int nextentitylementinarray=
import java.util.*;
公共类联系人列表{
//数组及其属性的声明
私有最终整数大小=10;
私人[]名单;
private int nextentitylementinarray=0;
//ContactList对象的构造函数
公共联系人列表(){
列表=新人[人数];
}
//方法将新联系人添加到数组中
public void addNewContact(){
列表[NextEnterYelementArray]=新的人员();
列表[NextEnteryElementArray].read();
NextEnteryElementArray++;
}
//方法按姓氏检索联系人
int searchByLastName(人员[]列表){
扫描仪控制台;
控制台=新扫描仪(System.in);
String searchByLastName=console.next();
for(int i=0;i
您的列表
下标似乎是错误的:对于循环的每个迭代,您都在这样做:
if (list[nextEmptyElementInArray].lastName.equals(searchByLastName))
if (list[i].lastName.equals(searchByLastName))
如果我理解正确,您应该这样做:
if (list[nextEmptyElementInArray].lastName.equals(searchByLastName))
if (list[i].lastName.equals(searchByLastName))
此外,请注意将变量命名为与函数相同的名称。这最多会导致混淆
[编辑]刚刚注意到您正在预先分配列表,然后使用nextEnteryElementArray
管理实际内容长度。您的for
循环可能会如下所示:
for (int i= 0; i< nextEmptyElementInArray; i++)
for(int i=0;i
我建议将搜索方法更改为
int searchByLastName(Person [] list, String lastName) {
for (int i= 0; i < list.length; i++) {
if (list[i].lastName.equals(lastName))
return i;
}
}
return -1;
}
int searchByLastName(个人[]列表,字符串lastName){
for(int i=0;i
从该函数外部的控制台读取lastName并将其作为搜索参数传递为什么总是检查
列表[NextEnteryElementArray]
?看起来应该是列表[i]
。