2016-05-02 1 views
0

Ich habe die folgende Methode in Java geschrieben. Ich beabsichtige, die Scanner-Eingabetextdateien von Namen auszulesen, aber in diesem Moment würde es nur einen Namen von der Datei nehmen und sie anzeigen.Drucken einer verknüpften Liste aus Textdateien: Ausgabe nur einen Namen drucken - Java

public class AssassinManager { 

private static class AssassinNode { 
    private static String player; 
    private static String killer; 
    private AssassinNode next; 
    private AssassinNode(String name){ 
     AssassinNode.player = name; 
     AssassinNode.killer = null; 
     this.next = null; 
    } 
}// End of AssassinNode 

private AssassinNode killring; // the head of the kill ring linked list - first link 
private AssassinNode graveyard; // the head of the graveyard linked list - second link 

/* AssasssinManager Constructor */ 
public AssassinManager(ArrayList<String> players){ 
    if (players == null || players.isEmpty()){ throw new IllegalArgumentException("Error: ArryList is null/empty!"); } 
    AssassinNode node = killring = new AssassinNode(players.get(0)); // create first node - for the killring 
    for (int i = 1; i < players.size(); i++){ // Add a new node at the end of each killing 
     node.next = new AssassinNode(players.get(i)); 
     node = node.next; 
    } 
    System.out.println(players.size()); 
} // End of AssassinNode Constructor - Done 

/* Prints the names of the people in the kill ring */ 
public void printKillRing() { 
    if(killring == null){ 
     return; // break out of printKillRing method when list is null 
    } 
    AssassinNode node = killring; 
    do { 
     if (node.next == null) { 
      System.out.println(node.player + " is stlaking " + node.player); 
     } else 
      System.out.println(node.player + "-->"); 
     node = node.next; 
    } while (node != null); 
} // End of printKillRing 

Ausgang: Kelly -> Kelly -> Kelly ist Stalking Kelly

Vorgesehen Ausgabe: Kelly -> Jacob -> Ron

+0

verwenden Sie jede Bibliothek? AssasinNode? – Troncador

+0

Dies fehlt viel Kontext. Die Quelle für AssassinNode wäre sehr nützlich. – shmosel

+0

@Troncador Ich fügte den Rest des Codes in den Kommentar – Asteri

Antwort

0

die AssassinNode Klasse ändern in,

private static class AssassinNode { 
    private String player; 
    private String killer; 
    private AssassinNode next; 

    private AssassinNode(String name){ 
     AssassinNode.player = name; 
     AssassinNode.killer = null; 
     this.next = null; 
    } 
}// End of 

das Schlüsselwort static von Spieler und Killer entfernt

+0

Das hat funktioniert! Vielen Dank!! xx – Asteri

+0

Sie sind willkommen. Bitte akzeptiere die Antwort. – Kajal

0

So scheinbar AssassinNode Hat sowohl ein statisches als auch ein Instanzfeld den Namen "player"? Wenn nicht, müssen Sie die Instanz ändern (entfernen Sie einfach das statische Schlüsselwort aus der Felddeklaration). Sobald Sie das behoben haben, wird Ihnen das folgende (wahrscheinlich?) Geben, was Sie wollen.

public void printKillRing(){ 
 
     if(killring == null){ 
 
      return; // break out of printKillRing method when list is null 
 
     } 
 
     AssassinNode node = killring; 
 
     do { 
 
      if (node.next == null){ 
 
       System.out.println(node.player); 
 
      } else 
 
       System.out.print(node.player + "-->"); // print the current element 
 
      node = node.next; 
 
      
 
     } while (node != null); 
 
    } // End of printKillRing

+0

Ich versuchte diesen Vorschlag, die Ausgabe war das gleiche wie meine vorherige Funktion. – Asteri