我在尝试忽略两个数字之间的标签时收到错误消息,错误显示如下:在文本文件中,我从那里读取有一些单位数字和一些两位数,这就是我使用的原因.substring(42 ,44);
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "5 "
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at readTheFile.setSenID(readTheFile.java:230)
at Sensor.setSensorID(Sensor.java:69)
at getDrink.<init>(getDrink.java:22)
at controlPanel$1.actionPerformed(controlPanel.java:54)
我尝试了几个替换空格和标签选项,例如temp.replaceAll(&#34; // t&#34;,&#34;&#34;)或(&#34; \ s +&# 34;,&#34;&#34)。我似乎无法找到一种方法来获得只读int。有什么想法吗?
继承了我认为导致问题的代码
BufferedReader bufferedReader = new BufferedReader(fileReader);
int lineNumber = 0;
ArrayList<Integer> SenID = new ArrayList<Integer>();
while((line=bufferedReader.readLine())!=null){
lineNumber++;
if (lineNumber >= 24) {
String temp = line.substring(42, 44);
temp.replaceAll("//s+", ""); //think error is here
int x = Integer.parseInt(temp);
SenID.add(x);
}
}
这是从
读取的文件25-Feb-2008 00:20:14 25-Feb-2008 00:22:57 24 1
25-Feb-2008 09:33:41 25-Feb-2008 09:33:42 24 1
25-Feb-2008 09:33:47 25-Feb-2008 17:21:12 24 1
25-Feb-2008 09:36:43 25-Feb-2008 09:37:04 5 1
25-Feb-2008 09:37:20 25-Feb-2008 09:37:23 6 1
25-Feb-2008 09:37:51 25-Feb-2008 09:37:52 14 1
25-Feb-2008 09:37:55 25-Feb-2008 09:37:56 14 1
25-Feb-2008 09:37:58 25-Feb-2008 09:38:01 6 1
答案 0 :(得分:2)
此
temp.replaceAll("//s+", "");
应该是
temp = temp.replaceAll("//s+", "");
字符串是不可变的,因此replaceAll()
,trim()
等方法将返回一个新字符串,而不是修改现有字符串。