2014-05-07 48 views
0

我的外環控制讀取數據文件是不正確的,有人可以向我解釋如何讓循環打印整個數據文件,而不僅僅是數據文件中的第一個字?Infile輸出只有1行

public static void display() throws IOException, FileNotFoundException { 
    Scanner infile = new Scanner(new FileReader("G:\\DataFileDS.txt")); 
    StringTokenizer token = new StringTokenizer(infile.nextLine()); 
    StringElement str = new StringElement(); 

    while(token.hasMoreTokens()) { 
     str.setString(token.nextToken()); 
     stringList.insert(str); 
    } 

    stringList.print(); 

    int n = stringList.listSize(); 
    for(int i = 0; i < n - 1; ++i) { 
     System.out.println(stringList.retrieveAt(i) + " " + stringList.retrieveAt(i+1)); 
    } 
} 

回答

0

我猜while循環運行的第一次,一旦它完成,它打印的價值。然後你的for循環只運行一次,因爲listize可能只有一個。 嘗試打印列表大小。因爲我無法測試這個代碼。

這可能是這樣的:

public static void Display()throws IOException, FileNotFoundException 
    { 
     Scanner infile = new Scanner(new FileReader("G:\\DataFileDS.txt")); 
     StringTokenizer token = new StringTokenizer(infile.nextLine()); 
     StringElement str = new StringElement(); 

     while(token.hasMoreTokens()) 
     { 
     str.setString(token.nextToken()); 
     stringList.insert(str); 
     int n = stringList.listSize(); 
     for(int i=0; i<n-1; i=i+1) 
     { 
      System.out.println(stringList.retrieveAt(i) + " " + stringList.retrieveAt(i+1)); 
     } 
      stringList.print(); 
     } 


    } 
+0

現在一定是還不止這些,雖然你的代碼區別它與重複同樣的名字得到了輸出三次,但三次。在解構這部分並重新構建我的方式之前,還有其他建議嗎? – user3604953

+0

listize打印什麼? – fscore

+0

可以把你的代碼放在https://ideone.com中,這樣我就可以試着測試 – fscore