我有,
1.
我有一个xml文件,包含个人信息。
2.
哈希映射,它读取xml文件。
3.
Scanner
允许用户提供个人名称(只是名称),以便代码与存储在has map中的信息进行比较,如果我匹配ant然后代码打印出该个人信息(姓名,电话等)。
我遇到循环部分的问题,你能帮忙开始工作吗?
来自我的主要班级:
System.out.println("Please enter a name:");
Scanner scan = new Scanner(System.in);
Person c1 = new Person();
c1.setName(scan.nextLine());
String value = c1.getName();
c1.getTimeInfo(value);
来自我的Person类:
public void getPersonInfo(String value)
{
List<Person> t = persons.get(name);
int iD ;
value = t.get(0);
for(int i = 0; i < t.length(); ++i) {
if(t.get(i) == value) {
value = t.get(i);
this.iD = i;
}
System.out.println("The person info : " + this.name.get(iD) + "-" +this.phone.get(iD) + " "+ this.address.get(iD)+ "-" + this.title,get(iD));
答案 0 :(得分:0)
您的getPersonInfo()
方法现在运行的方式是返回名称列表中的最后一个人。这是因为您将输入值重新分配给t.get(0)
,然后遍历列表。这将导致始终返回姓氏。您可以在没有变量的情况下进行此比较,因为您不会在输出中使用它。此外,您不应该使用==
来比较字符串,而是使用.equals()
,如下所示:
public void getPersonInfo(String value){
List<Person> t = persons.get(name);
int iD ;
for(int i = 0; i < t.length(); ++i) {
if(t.get(i).equals(value)) {
this.iD = i;
}
System.out.println("The person info : " + this.name.get(iD) + "-" +this.phone.get(iD)
}
}
如果输入值不在名称列表中,这仍然不会阻止任何事情发生,因此您可能需要处理这种情况。但是,这将阻止您始终在名称列表中打印有关最后一个人的信息。
此外,您正在将Person
与for循环中if语句中的字符串进行比较,因此要么将输入更改为Person
,要么将人员列表更改为字符串列表。