从一行的特定部分读到最后(JAVA)

时间:2014-04-10 12:19:40

标签: java

我有一个文本文件。每条线的长度略有不同。我想读取每行的第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

2 个答案:

答案 0 :(得分:2)

  

我想读取每行第44个字符到行尾

然后拨打String.substring(int)

String temp = line.substring(44);

我强烈怀疑您当前代码的问题是,当值1只有一个字符时,它期望获得2个字符。指数46超出范围。

(另外,我强烈建议您遵循Java命名约定 - SenState应该是senState - 或者更好,这一点可以清楚地表明其含义。)

答案 1 :(得分:0)

试试这个:

if (line.lenght() > 44) {
    String temp = line.substring(44);
}