Как продолжить обработку, даже если обнаруженный файл не найден в цикле? - PullRequest
0 голосов
/ 08 марта 2011
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 Частота терминов: 0,0000

Количество слов: 3 Общее количество: 119 Частота терминов: 0,0252

Файл = abc5.txt Количество слов: 4 Общее количество: 141 Частота терминов:0.0284

о слове: 0 Общее количество: 141 Частота: 0,0000

Количество слов: 2 Общее количество: 141 Частота: 0.0142

Файл = abc6.txt

a Файл не найден

После того, как определенный файл не найден, код останавливается.Как сделать так, чтобы перейти к другому файлу?Этот код имеет 2 дополнительных файла для обработки, но он останавливается, когда обнаруженный файл не найден.Любые советы?

Ответы [ 5 ]

1 голос
/ 08 марта 2011

Вы должны поймать исключение внутри вашего цикла, вот так

 for(a=0; a<filename; a++)
   {
     try{
       Scanner s = new Scanner(file);
     }catch{FileNotFoundException e){ 
      // handle the exception
     }
   }
0 голосов
/ 08 марта 2011

Причина, по которой он не продолжается, состоит в том, что исключение прерывает цикл, так как он перехватывается за пределами цикла.Вам нужно поместить (или переместить) блок try / catch внутри цикла.

for(a=0; a<filename; a++) {
    try {
        ...
    } catch (IOException ex) {
        // handle exception
    }
}
0 голосов
/ 08 марта 2011

Ваш фрагмент кода выглядит неполным, но похоже, что у вас есть пара try / catch вокруг цикла for. Возможно, вы захотите еще один блок try / catch внутри цикла for. Вы можете сделать так, чтобы он перехватывал FileNotFoundException или более общее исключение и позволял циклу продолжаться без прерывания.

0 голосов
/ 08 марта 2011

Использование try{..} catch () (см. учебник по солнцу ).

0 голосов
/ 08 марта 2011

Переместите свою попытку / поймайте в свой цикл for.

В частности, вы хотите обернуть его только вокруг попытки открыть файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...