2017-03-11 2 views
0

Ich habe,Mit Scanner mit xml

1. Ich habe eine XML-Datei von Individuen Informationen besteht.

2. Hash-Map, die die XML-Datei liest.

3.Scanner, die den Benutzer ermöglicht gibt einen individuellen Namen (nur den Namen), so dass der Code mit den in der Karte hat gespeicherten Informationen vergleichen, wenn i ant paßt dann dann dem Code-Druck, die einzelne Daten (Namen, Telefon, etc.) .

Ich habe ein Problem mit dem Looping-Teil, können Sie helfen, zur Arbeit zu gelangen?

Aus meiner Hauptklasse:

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

Aus meiner Person Klasse:

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

Wo und wie verwenden Sie die hashmap? – easiestripes

+0

'Liste t = persons.get (Name);' Woher kommt 'name'? Sollte es "Wert" sein? Ich sehe keine 'HashMap' oder eine' Map' in Ihrem Code - Sie verwenden eine 'List'. Sie verwenden einen 'Scanner', um einen Eingabewert zu erhalten, keinen Wert von einer Karte (oder von einer Liste) zu erhalten. –

+0

Sie können keinen Scanner auf einer HashMap verwenden und Sie können XML nicht mit einer HashMap lesen. Bitte schreibe deine Quezon um, damit es Sinn macht. – EJP

Antwort

0

Die Art und Weise Ihrer getPersonInfo() Methode funktioniert jetzt ist die letzte Person in der Namensliste zurückzukehren. Dies liegt daran, dass Sie den Eingabewert t.get(0) zuweisen und dann die Liste durchlaufen. Dies führt dazu, dass der Nachname immer zurückgegeben wird. Sie können auf eine Variable für diesen Vergleich verzichten, da Sie sie nicht in Ihrer Ausgabe verwenden. Außerdem sollten Sie nie == für den Vergleich von Zeichenketten verwenden, verwenden .equals() statt, etwa so:

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

dies noch nicht nichts nicht verhindern, wenn der Eingangswert nicht in der Namensliste ist, so dass Sie in Anspruch nehmen möchten, Sorge für diesen Fall. Dies verhindert jedoch, dass Sie immer die Informationen über die letzte Person in der Namensliste drucken.

Außerdem vergleichen Sie eine Person mit einer Zeichenfolge in der if-Anweisung in der for-Schleife, also ändern Sie entweder die Eingabe in eine Person oder die Liste der Personen in eine Liste von Zeichenfolgen.