使用带xml的扫描仪

时间:2017-03-11 00:55:46

标签: java hashmap

我有,

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));

1 个答案:

答案 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,要么将人员列表更改为字符串列表。