2012-12-20 57 views
0

我正在研究一種解析器(愛好項目),它需要一個Cpp文件,讀取文件中的註釋,然後嘗試基於此創建頭文件。掃描器中的NoSuchElementException

我面臨的問題是當java.util.Scanner即將讀取第一行。程序停止並給我NoSuchElementException。我無法弄清楚什麼是錯的。我檢查了路徑和路徑名都是正確的。該文件必須在那裏,並且我可以讀取Scanner對象上的字段以及調試時。那麼究竟是什麼問題呢?

有人暗示它可能認爲文件中沒有行。發生

問題在while((line = scanner.next()) != null) {

@Override 
public void run() { 
    Scanner scanner = null; 
    String filename = "", path = ""; 
    StringBuilder puBuilder, prBuilder, viBuilder; 
    puBuilder = new StringBuilder(); 
    prBuilder = new StringBuilder(); 
    viBuilder = new StringBuilder(); 
    for(File f : files) { 
     try { 
      filename = f.getName(); 
      path = f.getAbsolutePath(); 
      path = path.replace(filename, ""); 
      filename = filename.replace(".cpp", ""); 
      scanner = new Scanner(new FileReader(f)); 
     } catch (FileNotFoundException ex) { 
      System.out.println("FileNotFoundException: " + ex.getMessage()); 
     } 

     String line; 
     String tag; 
     while((line = scanner.next()) != null) { 
      line = line.trim(); 
      if(line.startsWith(PUBLIC)) { 
       tag = PUBLIC; 
+0

你可以嘗試改變你的while循環從'line!= null'到scanner.hasNext(),然後在循環內部有scanner.next()。 – Thomas

回答

0

Scanner.next拋出一個異常NoSuchElement如果沒有更多的令牌。

我看到你正在迭代文件列表。您在列表中獲得的第一個文件是否可能是空的?

你能打印出文件的名稱並檢查確認嗎?

相關問題