Java实现拼写检查方法报String index out of range错误求解
问题原因分析
- 下标越界根因:你在内层循环中没有使用循环变量
j,始终用外层循环的i作为下标读取answer的字符,当answer的长度小于engWord的长度时,i会增长到超过answer的最大下标,触发字符串下标越界异常。 - 逻辑错误:嵌套的双层循环设计完全不符合拼写检查的需求,当前写法会对
engWord的每个字符,重复比对answer.length()次,同一个位置的拼写错误会被重复计数,最终统计的错误数完全失真。
修正方案
拼写检查统计字符错误的常规逻辑:先取两个字符串的最大长度作为遍历上限,相同下标位置的字符不一致则计数+1,其中较短字符串超出自身长度的位置全部判定为错误。
修正后的代码如下:
public static int spellCheck(String answer, String engWord) { int error = 0; int maxLen = Math.max(answer.length(), engWord.length()); for (int i = 0; i < maxLen; i++) { // 任意一个字符串已遍历到末尾,或当前位置字符不一致都算错误 if (i >= answer.length() || i >= engWord.length() || answer.charAt(i) != engWord.charAt(i)) { error++; } } return error; }
内容的提问来源于stack exchange,提问作者emma
相关产品推荐
相关产品推荐

