2015-02-10 12 views
0

如果我註釋掉兩個for循環,程序將運行正常(因爲我調整了一個或兩個變量)。但是,當我在Eclipse中編譯和運行時,它只是坐着,沒有任何溢出錯誤或其他任何東西。該文件是一個文本文件,我試圖根據哪些行中包含*字符來過濾掉這些文件。爲什麼此功能無法正常工作,但在Eclipse中不顯示錯誤?

public List<String> readFile1(File file) throws IOException { 
    FileInputStream fis = new FileInputStream(file); 

    //Construct BufferedReader from InputStreamReader 
    BufferedReader br = new BufferedReader(new InputStreamReader(fis)); 

    List<String> list = new ArrayList<>(); 
    String line = null; 
    String checker = null; 
    int whereMenuItemIs = 0; 
    while ((line = br.readLine()) != null) { 
     if(!line.startsWith("\u0009")) { 
      for(int i=0; i<getListFromFile("C:/IRT", "bios.txt").size(); i++) 
      { 
       if(getListFromFile("C:/IRT", "bios.txt").get(i).contains(line)) 
       { 
        i = whereMenuItemIs; 
       } 
      } 
      for(int j=whereMenuItemIs+1; j<getListFromFile("C:/IRT", "bios.txt").size(); j++) 
      { 
       if(readFile1(file).contains(getListFromFile("C:/IRT", "bios.txt").get(j))) 
       { 
        System.out.println("it got here"); 
       } 
       else 
       { 
        checker= checker + getListFromFile("C:/IRT", "bios.txt").get(j); 
       } 
      } 
     if(checker.contains("\u0009*")){ 

     } 
      list.add(line); 
     } 
    } 

    br.close(); 
    return list; 
} 
+0

它只是坐在那裏永遠不會退出循環?嘗試在這裏拋出一個打印語句來看看它在讀什麼 – Neverwork2123 2015-02-10 05:12:14

+0

它在這裏被捕獲:for(int i = 0; i Jordan 2015-02-10 05:17:05

+0

此外,每次進入循環時都不應重讀文件。只需在頂部讀取它並將其轉儲到數組 – 2015-02-10 05:17:07

回答

0

雖然在其他語句中嵌入函數在許多地方起作用,而在其他語句中則不起作用。

當編譯器設置循環和類似的結構時,它做了很多工作。我認爲你的循環值爲i,以getListFromFile(「C:/ IRT」,「bios.txt」)。size();與你期望的不同。嘗試打印出答案 - getListFromFile(「C:/ IRT」,「bios.txt」)。size();或者將它放在循環外部,將它賦值給一個變量然後使用它。如果公式產生文件大小,它可能會在每個循環中重置自身。

此外,您不應該在程序中讀取文件5次。

0

你行:

i = whereMenuItemIs; 

應該是:

whereMenuItemIs = i; 
+0

謝謝大家。現在正在執行(經過很長時間,因爲所有的循環。從本質上講,我給這個函數與SATA仿真和EFI啓動順序列表,從這個一段文字:SATA仿真 \t IDE \t RAID \t * AHCI EFI啓動順序 \t USB軟驅/ CD \t USB硬盤驅動器 \t ATAPI CD-ROM驅動器 \t其他和它應該梳理EFI啓動順序的原因是什麼正在進行它不具有* – Jordan 2015-02-10 05:59:34

+0

'公開名單 getOptions(名單 menuOne)拋出IOException異常 \t { \t \t列表 menuOneRevised = menuOne; \t \t String checker =「」; \t \t對(INT I = 0; I Jordan 2015-02-10 05:59:53

+0

{ \t \t \t \t \t \t \t checker = checker + getListFromFile(「C:/ IRT」,「bios.txt」)。get(k); \t \t \t \t \t \t \t} \t \t \t \t \t} \t \t \t \t \t如果(!checker.contains( 「*」)) \t \t \t \t \t { \t \t \t \t \t \t menuOneRevised。刪除(j ); \t \t \t \t \t} \t \t \t \t \t \t \t \t \t \t} \t \t \t} } \t \t \t 返回\t menuOneRevised;' – Jordan 2015-02-10 06:00:43

相關問題