0

Ich möchte einige Fragen zu verknüpften Listen lösen, aber ich kann keine Eingaben von der Konsole machen, ich weiß nicht, wo ich falsch liege.Wie nehme ich die Konsoleneingabe mit dem Scanner in der Einfach/Doppelt Verknüpfte Liste in Java (ohne Sammlung)?

Was soll ich mit meinem Code falsch zu machen:

import java.util.*; 
class ScannerInputLinkedList{ 
    static class Node{ 
     int data; 
     Node next; 
    } 
    void insertNode(Node head, int data){ 
     Node curr = head; 

     Node temp = new Node(); 
     temp.data = data; 
     temp.next = null; 

     while(curr.next!=null){ 

      curr = curr.next; 
     } 
     curr.next = temp; 
     System.out.print(curr.data+"->"); 
    } 
    System.out.println(); 
    public static void main(String[] args) { 
     ScannerInputLinkedList obj = new ScannerInputLinkedList(); 
     Scanner sc = new Scanner(System.in); 
     int t = sc.nextInt(); 
     int x; 
     Node head = new Node(); 
     while(t-- > 0){ 
      x = sc.nextInt(); 
      obj.insertNode(head, x); 

     } 
    } 

} 
+1

Ich bin ein wenig verwirrt, ob Sie eine verknüpfte Liste von Benutzereingabe erstellen und solche Liste testen möchten? – Crabime

+1

Ich glaube nicht, dass Sie jemals 'obj.head' zugewiesen haben –

+0

@ cricket_007: habe es nicht bekommen, können Sie es helfen –

Antwort

0

Nur ein kleines Problem mit Ihrem Code. Die Druckanweisung (oberhalb der Hauptmethode) befindet sich außerhalb jeder Methode. Tatsächlich wird es gar nicht benötigt. Entfernen Sie es einfach und ändern Sie System.out.print (...) zu System.out.println (...) in Zeile 19. Dadurch wird Ihr Code fehlerfrei.

Diese Lösung betraf Ihr Problem, dass Sie keine Eingaben erhalten konnten. Abgesehen davon ist es unklar, was Sie erreichen möchten. Falls Sie versuchen, Knoten an Ihre verknüpfte Liste anzuhängen, müssen Sie Ihre Logik erneut überprüfen. Ihr Code erstellt eine Liste mit bereits einem Knoten, die an ihn angehängt ist, aber Sie drucken die Daten des Knotens, dessen nächster ein neuer Knoten ist.

Bei den Eingängen [t = 1, x = 3] druckt Ihr Code 0->. Diese "0" sind die Daten des ersten Knotens für den Satz von Eingängen und Ihr neuer Knoten ist der zweite Knoten.

Wie auch immer, nur für die Lösung Ihres Problems, keine Eingaben zu machen, hier ist der korrigierte Code. Sie können IDEs wie Netbeans oder Eclipse verwenden, um schnell zu identifizieren, was mit Ihrem Code nicht stimmt.

import java.util.*; 
class ScannerInputLinkedList{ 

static class Node{ 
    int data; 
    Node next; 
} 
void insertNode(Node head, int data){ 
    Node curr = head; 

    Node temp = new Node(); 
    temp.data = data; 
    temp.next = null; 

    while(curr.next!=null){ 

     curr = curr.next; 
    } 
    curr.next = temp; 
    System.out.println(curr.data+"->"); 
} 
public static void main(String[] args) { 
    ScannerInputLinkedList obj = new ScannerInputLinkedList(); 
    Scanner sc = new Scanner(System.in); 
    int t = sc.nextInt(); 
    int x; 
    Node head = new Node(); 
    while(t-- > 0){ 
     x = sc.nextInt(); 
     obj.insertNode(head, x); 

    } 
} 
} 
Verwandte Themen