2014-09-17 2 views
0

У меня возникли проблемы с созданием программы, которая обнаружила бы ошибку в текстовом файле и распечатала строку, где была ошибка, а также напечатайте номер строки, ошибка включена. Ошибка, что он ищет, если есть 6 слов/цифр на каждой строке, если не было бы ошибкойКак скопировать строку из текстового файла и распечатать строку и номер строки

Для примера:

текст файла

название породы месяц день год вес

название породы месяц

название породы месяц день год вес

*** линии Ошибка в файле:

название породы месяц Ошибка на линии № 2: количество полей должно быть 6, а не 3. *

int numline= 0; 
while(sc.hasNextLine()) 
    { 

    // read a line from the input file via sc into line 
     line = sc.nextLine(); 




     try{ 
     StringTokenizer stk = new StringTokenizer(line); 
     String name = stk.nextToken(); 
     String breed = stk.nextToken(); 
     int month = Integer.parseInt(stk.nextToken()); 
     int day = Integer.parseInt(stk.nextToken()); 
     int year = Integer.parseInt(stk.nextToken()); 
     double weight = Double.parseDouble(stk.nextToken()); 
     numline++; 
     Dog list = new Dog(name, breed, month, day, year, weight); 


     dogs.add(list); 




     } 

     catch(Exception missError) 
     { 
      System.out.println("Error Lines detected in file:"); 
      System.out.println("Number of fields on line must be 6"); 

     } 

    } 
    // close the file 
sc.close(); 
    System.out.println(numline); 
+1

место 'numLine ++' как первая строка в вашем блоке 'try' и использовать его в' catch' bolck. –

ответ

0

Место numLine++ в качестве первой линии в вашем try блоке и использовать его в catch блоке , Также используйте line.split("\\s+");, который возвращает String[], с тем, что вы не знаете поля перед рукой, тогда вам не нужно зависеть от Exception.

int numLine= 0; 
while(sc.hasNextLine()) 
    { 

     line = sc.nextLine(); 
     numLine++ 
     String[] fields = line.split("\\s+"); 
     if(fields.length != 6) { 
      System.out.println("Error Line number:"+numLine); 
      System.out.println("Number of fields on line must be 6, but it has :"+ fields.length); 
     } 
    } 
+0

Спасибо, как бы напечатать строку и номер строки. – 2014-09-17 03:34:53

+0

Он подсчитывает количество символов в каждой строке, а не слова. – 2014-09-17 03:44:29

+0

Это результат: Ошибка Номер строки: 1 Количество полей в строке должно быть 6, но оно имеет: 27 – 2014-09-17 03:45:25

Смежные вопросы