【问题标题】:I have a problem in file handling in java我在java中处理文件时遇到问题
【发布时间】:2021-02-23 06:35:42
【问题描述】:

我们将不胜感激。

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

我的代码是:

【问题讨论】:

  • 使用Integer.parseInt(stringTokenizer.nextToken().trim())
  • 您的问题在于字符串处理而不是文件处理。
  • @NomadMaker 我正在尝试编写文件的详细信息并通过打印罚款对其进行一些更改,但我的代码不起作用。你能帮忙吗?
  • 那再问一个问题。不要编辑这个来问它,而是问一个新问题。

标签: java token


【解决方案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”解析为整数,因为存在空格。 您可以使用 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() 移到方法的末尾。

    【讨论】:

    • 谢谢你的澄清。我会在方法结束后关闭它
    猜你喜欢
    • 2019-04-24
    • 2021-03-10
    • 2011-09-20
    • 2016-01-04
    • 2022-01-03
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多