1

在下面的代码中获取异常:

import java.io.*;

public static void main(String[] args) throws IOException{
    FileReader objRead = new FileReader("/home/acer/Desktop/sulabh");
    BufferedReader objB = new BufferedReader(objRead);
    String input = null;
    while((input=objB.readLine())!= null){
        String temp = input.substring(0,2);
       if(temp.contains("77")) {
           System.out.println(input);
       }
    }
    objB.close();
}

答案错误是:
777
777

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 0, end 2, length 0 at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319) at java.base/java.lang.String.substring(String.java:1874) at Main.main(Main.java:10)
4

2 回答 2

0

来自子字符串的 java 文档:

Throws:
    IndexOutOfBoundsException - if the beginIndex is negative, or endIndex is larger than the length of this String object, or beginIndex is larger than endIndex.

String temp = input.substring(0,2);在获得两条好线之后,您的线短于长度 2。

防范如下。

String temp = "";

if (input.length()>=2){
temp = input.substring(0,2);
}
于 2019-11-28T03:28:28.423 回答
0

我猜前两行已经处理得很好,最后的空行会出错。请检查文件末尾是否有空行。空行可能包含少于 2 个字符。

input.startsWith("77")或者你也可以试试

于 2019-11-28T03:45:14.557 回答