当我尝试从文本文件中读取一些数据并将其转换为整数时,我遇到了NumberFormatException
错误。从我看到的其他人说,当使用pasreInt()
将空字符串转换为整数时,会导致此错误。但我已经能够将文件中的字符串'1'打印到输出中。有谁知道为什么我收到这个错误,即使字符串似乎不是空的?这是我的代码:
try {
//Retrieve Info
FileReader fr = new FileReader("BankInfo.txt");
BufferedReader br = new BufferedReader(fr);
//Skip specified number of lines
for(int i=0; i<line; i++) {
br.readLine();
}
//Print the string to output
String holderStr = br.readLine();
System.out.println(holderStr);
//The line creating the NumberFormatException
totalBalNum = (double)Integer.parseInt(holderStr);
br.close();
//Read Whole File
BufferedReader br2 = new BufferedReader(fr);
while((str = br.readLine()) != null) {
arrList.add(str);
}
br2.close();
} catch (IOException | NumberFormatException e) {
System.out.println("ERROR! Problem with FileReader. " + e);
}
我知道我的代码可能真的很草率和低效......我有点像菜鸟。
答案 0 :(得分:0)
好的,我认为将字符串转换为Integer然后将其类型转换为double会导致错误。你为什么不把字符串转换为double。 此外,您必须在阅读时修剪线条以避免任何空格。
String holderStr = br.readLine().trim();
System.out.println(holderStr);
totalBalNum = Double.parseDouble(holderStr);
答案 1 :(得分:0)
使用replaceAll()
将数字转换为空字符。
holderStr.replaceAll("\\D+","");
例如
字符串extra34345 dfdf
将转换为34345
字符串ab34345ba
将转换为34345
字符串\n34345\n
将转换为34345
代码
String holderStr = br.readLine();
//this line will remove everything from the String, other than Digits
holderStr= holderStr.replaceAll("\\D+","");
System.out.println(holderStr);