我正在做一些编码蝙蝠练习,而且我不太了解for-loop中的内容。
public static int countHi(String str){
int count = 0;
// While i is less than the length of string increase the index by one
// Checking the char at each index
for(int i = 0; i < str.length()-1; i++){
// Do i + 2 because hi has two letters
// i = index 0 and add 2 so 0,1,2-- but 2 is exlcuded so check to see if index 0,1 equals "hi"
if(str.substring(i, i+2).equals("hi")){
count++;
}
}
System.out.println("Hi appears: " + count + " times.");
return count;
}
为什么str.length() - 1?如果我将其更改为str.Length我会收到错误:线程中出现异常&#34; main&#34; java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:5
答案 0 :(得分:1)
想想这一部分:
str.substring(i, i+2)
当i
等于字符串的长度时,i + 2
将超过字符串的结尾1,从而给出一个越界错误。
答案 1 :(得分:0)
这是因为你在str.substring(i,i + 2)中使用了i + 2,这导致了越界异常。
答案 2 :(得分:0)
当您使用str.length()
时,它会为您提供字符串的长度,而可访问的字符串的最大索引由str.length() - 1
给出。例如,"String"
的长度为6.因此,当您尝试执行此操作str.substring(5 , (5+ 2))
时,它将尝试访问超出边界的索引,因此会抛出异常。