У меня проблема с обработкой файлов в java

#java #token

#java #токен

Вопрос:

любая помощь будет оценена.

выведите на нем некоторые подробности о штрафах, но код не дает мне выходных данных.

мой код :

Комментарии:

1. Использование Integer.parseInt(stringTokenizer.nextToken().trim())

2. Ваша проблема заключается в обработке строк, а не в обработке файлов.

3. @NomadMaker Я пытаюсь записать детали моего файла и внести в него некоторые изменения, напечатав штраф, но мой код не работает.вы можете помочь?

4. Тогда задайте другой вопрос. Не редактируйте этот вопрос, чтобы задать его, а задайте новый вопрос.

Ответ №1:

 class BookLib{

  String userName ;
  String bookName;
  int noOfDays;
  int fine;

    @Override
    public String toString() {
        return "BookLib{"  
                "userName='"   userName   '''  
                ", bookName='"   bookName   '''  
                ", noOfDays="   noOfDays   '}';
    }
  

}
 
 class Library{
   List<BookLib> books = new ArrayList<>();
   
  void readDetails() throws IOException{
  
    FileReader fr = new FileReader("fineDetails.txt");
    BufferedReader br = new BufferedReader(fr);
    
    
      String thisLine;
      List<String> lines = new ArrayList<>();
    
     
      while ((thisLine = br.readLine()) != null) {
          lines.add(thisLine);
      }

      for(String readLine: lines){
        StringTokenizer stringTokenizer = new StringTokenizer(readLine, ",");
        BookLib tempBook = new BookLib();
        
        tempBook.userName = stringTokenizer.nextToken().trim();
        tempBook.bookName = stringTokenizer.nextToken().trim();
        tempBook.noOfDays = Integer.parseInt(stringTokenizer.nextToken().trim());
        
        System.out.println("BookLib = "   tempBook);
        books.add(tempBook)
      
      }

        br.close();
        fr.close();
      
  }
 

Я надеюсь, приведенный выше код поможет вам в обработке NumberFormatException и будущей обработке ArrayIndexOutOfBoundException. вы также можете использовать try-catch {} для обработки этих ошибок.

Ответ №2:

Проблема в том, что вы не можете разобрать строку «25» до целого числа из-за пробела. Вы можете удалить пробелы, используя метод обрезки строки следующим образом:

     //...
    book[i].userName = stringTokenizer.nextToken();
    book[i].bookName = stringTokenizer.nextToken();
    book[i].noOfDays = Integer.parseInt(stringTokenizer.nextToken().trim()); // trim here
    //...
 

Я думаю, что есть еще одна проблема, которая пока не вызвала никаких ошибок, потому NumberFormatException что она возникла ранее: вы закрываете программы чтения br и fr в цикле for, но они все равно будут использоваться там. Вы должны переместить строки br.close() и fr.close() вниз до конца метода.

Комментарии:

1. Спасибо за разъяснение. Я закрою его после метода