我有一个文本文件。每条线的长度略有不同。我想读取每行的第44个字符到行尾。对于某些线路工作正常,但为其他线路出错。
int lineNumber = 0;
ArrayList<String> SenState = new ArrayList<String>();
while((line=bufferedReader.readLine())!=null){
lineNumber++;
if (lineNumber >= 24) {
String temp = line.substring(44, 46);//error occurs here for int 46
SenState.add(temp);
}
}
下面的是我正在阅读的文本文件的一部分。我只需要获得每行的Val
Start time End time ID Val
-------------------- -------------------- -- ---
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
答案 0 :(得分:2)
我想读取每行第44个字符到行尾
String temp = line.substring(44);
我强烈怀疑您当前代码的问题是,当值1只有一个字符时,它期望获得2个字符。指数46超出范围。
(另外,我强烈建议您遵循Java命名约定 - SenState
应该是senState
- 或者更好,这一点可以清楚地表明其含义。)
答案 1 :(得分:0)
试试这个:
if (line.lenght() > 44) {
String temp = line.substring(44);
}