2013-11-22 119 views
0

我對Java和StackOverflow非常陌生,所以請不要吝嗇。我真的很感謝一些幫助。先進的謝謝你。getNext()鏈接列表

我覺得這很容易,我已經嘗試了一百萬種不同的方式,但它不工作。

我想在一個文本文件中並將其存儲到鏈接列表中,並試圖訪問此鏈接列表的第三個節點。出於某種原因,我可以訪問第一個節點,然後我可以使用getNext()命令轉到下一個節點,但是當我嘗試使用getNext()轉到第三個節點時,它會繼續返回第二個節點。所以它不會去第三個節點。 我只是想念一些關鍵概念?另外讓我知道你是否需要更多信息。

正被採取的文本文件是: ABCDE AB //這是我想 BC BD CD CE DE行

這裏是我的代碼部分:

public static void main(String[] args) throws IOException{ 
    /** 
    * Check whether the user types the command correctly 
    */ 
    if (args.length != 1) 
    { 

     System.out.println("Invalid input"); 
     System.out.println(args.length); 
     System.exit(1); 
    } 

    String filename = args[0]; 
    Scanner input = new Scanner (new File(filename)); 

      LinkedList<String> linkedList= new LinkedList<String>(); 

      while(input.hasNext()) 
    { 
     linkedList.addToRear(input.nextLine()); 
    } 

      LinearNode<String> link= linkedList.firstLink; 

      String temp = " "; 
    link.getNext(); 
    temp = (String)link.getElement(); 
    String[] numofVerticesArray = temp.split(" "); 
    int numOfVertices = Integer.parseInt(numofVerticesArray[0]); 
    int lineNumber = 1; 

    String [] arrayOfVertices; 
    LinearNode<String> secondLine = link; 
    String temp2; 


    for (int i=0; i <= lineNumber; i++) 
    { 
     secondLine = link.getNext(); 
    } 
    lineNumber = 2; 
    temp2 = (String)secondLine.getElement(); 
    arrayOfVertices = temp2.split(" "); 

      int[][] adjMatrix = new int[numOfVertices][numOfVertices]; 

    LinearNode<String> edgeLine = link; 
    String [] arrayOfEdge; 
    int rowCount = 0; 
    int columnCount = 0; 
    String temp3; 
    lineNumber = 2; 

    for (int i=0; i <= lineNumber; i++) 
    { 
     edgeLine = link.getNext(); 
     System.out.print((String)edgeLine.getElement()); 
        //When this is printed out, the second node's 
        //content is printed out, not the third node 
    } 
    lineNumber++; 
    temp3 = (String)edgeLine.getElement(); 
    arrayOfEdge = temp3.split(" "); 
+0

總的來說,我會建議複習這些概念,並試圖從頭開始重寫程序(這對你來說是個好習慣)。另外請記住,如果您調用'getNext',那麼請確保將它存儲在某個地方並記住它。在你的代碼中,每當你調用'getNext'時,你總是會忘記'getNext'的值 – Quillion

回答

3

您繼續詢問LinkedList中的第二個元素。

edgeLine = link.getNext(); 

設置LinkedList的鏈接的第二個元素的值轉換成edgeLine,然後循環,做同樣的,然後是同樣的一遍又一遍又一遍。

嘗試做

edgeLine = edgeLine.getNext(); 

這將繼續前進。

+0

我知道這很簡單!謝謝soooooooo多!我會在6分鐘內讓它選擇這個答案! :) – user3023346

+0

@ user3023346沒問題:)我很高興我能幫上忙。由於這個問題,我在大學期間實際上已經失敗了我的第一個中期課程。所以現在這是我經常檢查的。所以去和王牌測試/任務:) – Quillion

0

您對link變量的唯一賦值是:link= linkedList.firstLink;。你永遠不會分配任何東西給它。所以調用link.getNext()將始終返回相同的節點,即第二個節點。 link不是一個迭代器,因此你不能調用getNext()並通過鏈表前進。