2011-03-08 40 views
0
System.out.println("Please enter the required word :"); 
    Scanner scan = new Scanner(System.in); 
    String word = scan.nextLine(); 
    String [] array = word.split(" "); 
    int filename = 500; 
    String[] fileName = new String [filename]; 
    int a = 0; 



    try 
    { 
    for(a=0; a<filename; a++) 
    { 

     File file = new File("C:\\Users\\user\\fypworkspace\\TextRenderer\\abc" + a + ".txt"); 
     System.out.println("File = abc" + a + ".txt"); 
     for(int i=0; i<array.length; i++) 
     { 

    System.out.println(array[i]); 

    int totalCount = 0; 
    int wordCount = 0; 
    Scanner s = new Scanner(file); 
    { 
    while (s.hasNext()) 
    { 
    totalCount++; 
    if (s.next().equals(array[i])) wordCount++; 

    } 

    System.out.println("Word count: " + wordCount); 
    System.out.println("Total count: " + totalCount); 
    System.out.printf("Term Frequency: %8.4f", (double) wordCount/totalCount); 

輸出:即使遇到在循環中找不到的文件,如何繼續處理?

文件= abc4.txt

一個 字數:2 總數:119 期限頻率:0.0168

約 字數:0 總計數:119 Term Frequency:0.0000

the 字數:3 總數:119 期限頻率:0.0252

文件= abc5.txt 一個 字數:4 總數:141 期限頻率:0.0284

約 字數: 0 總計數:141 詞頻:0.0000

的 字數:2 總計數:141 期限Frequ ency:0.0142

文件= abc6.txt

一個 文件未找到

在沒有找到一個特定的文件後,代碼將停止。如何使它繼續到其他文件?此代碼有2個額外的文件要處理,但遇到找不到文件時它會停止。任何建議?

回答

1

應該捕獲該異常的循環中,像這樣

for(a=0; a<filename; a++) 
    { 
    try{ 
     Scanner s = new Scanner(file); 
    }catch{FileNotFoundException e){ 
     // handle the exception 
    } 
    } 
0

將您的try/catch移動到for循環中。

具體而言,您只想在試圖打開文件時包裝它。

0

您的代碼段看起來不完整,但看起來您在for循環周圍有一個try/catch對。您可能需要for循環中另一個try/catch塊。您可以讓它捕獲FileNotFoundException或更常規的異常,並允許循環繼續而不中斷。

0

它沒有繼續的原因是異常突破循環,因爲它被捕獲到循環之外。您需要將try/catch塊放入(或移動)循環內部。

for(a=0; a<filename; a++) { 
    try { 
     ... 
    } catch (IOException ex) { 
     // handle exception 
    } 
}