2016-04-12 5 views
0

Ich möchte in der verketteten Liste mit Scanner suchen, aber ich kann es nicht tun. Ich kann ohne Scanner suchen. Was ist falsch an diesem Code?Suche in verketteten Liste mit Scanner in Java

Meine Suchmethode:

public void Search(Object data){ 
    Node tmp = head ; 
    while(tmp != null){ 

     if(tmp.getData() == data){ 
      System.out.println("Your input is in the list"); 
     } 

      tmp = tmp.getNext(); 


    } 

} 

Und meine Hauptklasse:

public static void main(String[] args) throws ParseException { 
    LinkedList list =new Linkedlist(); 
    ...... // adding methods etc. 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter your input: "); 
    String x=input.next(); 
    list.Search(x); 
} 
+0

Können Sie den Fehler beschreiben? – sihao

+0

Ich schreibe Eingabe als Daten, die in der Liste ist, aber es nicht übereinstimmte. Code gibt mir keinen Fehler, aber es funktioniert nicht richtig. – mancini13

+1

@ mancini13 "es funktioniert nicht" ist völlig nutzlos als Beschreibung für was falsch ist. Was funktioniert nicht? Wie funktioniert es nicht? "Es stimmte nicht überein" ist näher, aber Sie haben nicht eingeschlossen, was Sie bekommen haben und was Sie erwartet haben. – azurefrog

Antwort

1

Sie passieren den String Parameter in search(data), die als Object gegossen wird.

Sie müssen entweder vom Typ Guss der Object data Parameter String zu geben, oder die Methodensignatur explizit ändern Typ akzeptieren String

+0

Ja, ich habe alles versucht, aber nichts hat sich geändert. – mancini13

+0

Ich würde empfehlen, in einem Debugger mit Haltepunkten ausgeführt, um genau zu sehen, was passiert. I.e. Ausnahme, falscher negativer Fund, etc. Ohne das wird es schwierig für jeden weiter zu helfen –

+0

habe ich auch gemacht. Codes gehen nicht in Bedingung mit Scanner ein, aber wenn ich etwas wie list.Search ("Eingabe") verwende, funktioniert es richtig. – mancini13

1

auf zu bauen, was Adam vorgeschlagen hat, können Sie den folgenden Code betrachten:

public void Search(String data){ 

    Node tmp = head ; 
    while(tmp != null){ 

     if(tmp.getData().equalsIgnoreCase(data)){ 
      System.out.println("Your input is in the list"); 
     } 

      tmp = tmp.getNext(); 
    } 
} 

Sie sollten .equals() oder .equalsIgnoreCase() verwenden, um die Zeichenfolge zu vergleichen, anstatt mit == zu vergleichen, die sich als Objekte miteinander vergleichen.

What is the difference between == vs equals() in Java?

+0

Ich habe es auch versucht, aber es gibt mir null Zeiger Ausnahmefehler. – mancini13

+0

können Sie die Protokolle in Ihrer Frage veröffentlichen? Ich denke, Nullpointer könnte ein anderes Problem sein – sihao