EVerytime I write any code similar to this one, I get this type of error. It's building a file but not letting it run, it just throws exception. I'm not familiar with exceptions as i am a beginner kindly help me out and specifically point out the mistake that I'm making.
public static void main(String args[]) {
String name = "Umer Hassan";
String name1 = "Hassan Umer";
char[] name2 = new char[name.length()];
for (int j = 0; j <= name.length(); j++) {
for (int i = 0; i <= name.length(); i++) {
if (name.length() == name1.length()) {
if (name.charAt(i) == name1.charAt(i)) {
name2[i] = name1.charAt(i);
}
}
}
}
}
When I run the program it shows the following error:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 11
at java.lang.String.charAt(String.java:658)
at Anagram.main(Anagram.java:24)
try this:
}
You should write the for cycle as
The indexes in the strings are zero-based, as in the arrays, so they have a range from 0 to length - 1. You go to length, which is outside of bounds.
String indexes are starting from
0
.Example :
str.charAt(3);
will throwsStringIndexOutOfBoundsException
charAt
starting position is0
. So the limit islength-1
.You have to change your for loop to
for (int i=0; i<name.length();i++){
Your loop control variables (
i
/j
) are going up toname.length()
- which is an out of bounds index (since the max index of a string/list islen - 1
- remember the first index is 0).Try using
i < name.length()
andj < name.length()
as the loop conditions instead.