我在 java 中处理文件时遇到问题
I have a problem in file handling in java
任何帮助将不胜感激。
打印一些关于罚款的细节,但代码没有给我输出。
我的代码是:
问题是由于空格,您无法将字符串“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 循环中关闭了阅读器 br
和 fr
, 但它们仍将在那里使用。您应该将行 br.close()
和 fr.close()
向下移动到方法的末尾。
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 {} 来处理这些错误。
任何帮助将不胜感激。
打印一些关于罚款的细节,但代码没有给我输出。
我的代码是:
问题是由于空格,您无法将字符串“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 循环中关闭了阅读器 br
和 fr
, 但它们仍将在那里使用。您应该将行 br.close()
和 fr.close()
向下移动到方法的末尾。
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 {} 来处理这些错误。