我在java中处理文件时遇到问题

时间:2021-02-23 06:35:42

标签: java token

任何帮助将不胜感激。

在上面打印一些关于罚款的细节,但代码没有给我输出。

我的代码是:

2 个答案:

答案 0 :(得分:1)

问题是由于空格,您无法将字符串“25”解析为整数。 您可以使用 String 的 trim 方法删除空格,如下所示:

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

我认为还有另一个问题尚未导致任何错误,因为 NumberFormatException 发生得更早:您确实关闭了 for 循环中的阅读器 brfr,但是它们仍将在那里使用。您应该将行 br.close()fr.close() 向下移动到方法的末尾。

答案 1 :(得分: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 {} 来处理这些错误。