Quick question. I have this code in a program:
input = JOptionPane.showInputDialog("Enter any word below")
int i = 0;
for (int j = 0; j <= input.length(); j++)
{
System.out.print(input.charAt(i));
System.out.print(" "); //don't ask about this.
i++;
}
i
being integer with value of 0, as seenRunning the code produces this error:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.charAt(Unknown Source)
at program.main(program.java:15)
If I change the charAt
int
to 0 instead of i
, it does not produce the error...
what can be done? What is the problem?
Replace:
j <= input.length()
... with ...
j < input.length()
Java String
character indexing is 0-based, so your loop termination condition should be at input
's length - 1.
Currently, when your loop reaches the penultimate iteration before termination, it references input
character at an index equal to input
's length, which throws the StringIndexOutOfBoundsException
(a RuntimeException
).