如何修复此“字符串索引超出范围错误”?

时间:2017-10-04 16:48:24

标签: java runtime-error

我在为学校写作的程序中修复此错误时遇到问题。我已经粘贴了下面的java片段以及运行代码后收到的错误。

Java片段:

public static void main(String[] args) throws IOException {
     String largeSpace = " ";
     String smallSpace = " ";
     //Printing header row
     System.out.print("Title" + largeSpace.substring("Title".length()));
     System.out.print("ISBN" + smallSpace.substring("ISBN".length()));
     System.out.print("Course" + smallSpace.substring("Course".length()));
     System.out.print("Enrollment" + 
     smallSpace.substring("Enrollment".length()));
     System.out.print("To Order");
     System.out.println();
     BufferedReader bufferedReader = null;

我收到错误:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String 
index out of range: -4
    at java.lang.String.substring(Unknown Source)
    at A5WilliamCarter.main(A5WilliamCarter.java:102)

3 个答案:

答案 0 :(得分:0)

因为" Title" .length()是5,而largeSpace只有长度1,而5大于1,所以它会抛出一个StringIndexOutOfBoundsException。你是短4个字符。

我不完全确定你在做什么,但我认为可能的解决办法如下:

    System.out.print("Title" + largeSpace*("Title".length()));

答案 1 :(得分:0)

您正在分配String largeSpace = " ";,然后尝试从索引5开始获取它的子字符串,这样就可以缩短4个字符。

答案 2 :(得分:0)

你无法做你正在做的事情

largeSpace.substring("Title".length())
smallSpace.substring("ISBN".length())

这是因为largeSpace和smallSpace的长度都是1,但是你试图从字符4和5开始获取子字符串。这会引发错误。我不确定你要对这段代码做什么,所以我无法提供修复。