常量StringIndexOutOfBoundsException

时间:2016-09-22 05:25:41

标签: java

我准备即将进行的测试,并尝试了解子字符串的工作原理。 请向我解释因为我没有在网上得到解释。 我的错误是:StringIndexOutOfBounds异常 我不明白它是如何导致错误的,因为当调用substring来提取字符串时,它会自动从endIndex返回-1。这就是为什么我加1,但它不起作用。

 public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        System.out.print("Enter the string: ");
        String string = scn.nextLine();


        System.out.print("Enter the start char: ");
        char startChar = scn.next().charAt(0);


        System.out.print("Enter the end char: ");
        char endChar = scn.next().charAt(string.length() - 1);

        int startIndex = string.indexOf(startChar); //Get index of the start character
        int endIndex = string.indexOf(endChar);

        if(startIndex == -1) {
            System.out.println("No such substring"); //First char doesn't exist
        }
        else {
            if(endIndex == -1) {
                System.out.println("No such substring");
            }
            else {
                String extractedString = string.substring(startIndex, endIndex + 1); //Cause sub string is -1
                System.out.println("Substring [" + extractedString + "]" + " is found");
            }
        }

2 个答案:

答案 0 :(得分:0)

应该是

char endChar = scn.next().charAt(0);

答案 1 :(得分:0)

所以你正在做的就是调用scn.next(),并从string.length-1来电scn.next()处获取字符。 string有多长,scn.next()有多长?