编写按字典序输出字符串的Java程序输入3个单词出现数组越界异常如何解决
问题排查结果
错误触发原因
- 你创建的
words数组仅包含3个元素,Java数组下标从0开始计数,有效下标范围是0、1、2。你的内层循环终止条件写为j < 4,当外层循环i = 2时,j会从3开始运行,此时访问words[3]超出了数组的有效范围,直接触发数组越界异常。
修复方案
将内层循环的终止条件从j < 4修改为j < 3即可正常运行,修改后的排序逻辑代码如下:
for(int i = 0; i < 3; ++i) { for (int j = i + 1; j < 3; ++j) { if (words[i].compareTo(words[j]) > 0) { String temp = words[i]; words[i] = words[j]; words[j] = temp; } } }
优化建议
你可以用数组的length属性代替硬编码的数值,后续如果调整输入单词的数量,不需要逐个修改循环条件,适配性更强:
for(int i = 0; i < words.length; ++i) { for (int j = i + 1; j < words.length; ++j) { if (words[i].compareTo(words[j]) > 0) { String temp = words[i]; words[i] = words[j]; words[j] = temp; } } }
内容的提问来源于stack exchange,提问作者java_basic
相关产品推荐
相关产品推荐

