如何打印字符串数组首元素首字符与尾元素尾字符?代码输出异常求助
问题分析与修复方案
你的代码错误出在获取最后一个字符串的最后一个字符的逻辑上:parts[right].charAt(right)里的right是字符串数组的最后一个元素索引(比如测试用例"Don't read this"拆分后数组长度为3,right的值是2),但这个索引和最后一个字符串的长度没有关联。测试用例中最后一个字符串是"this",它的长度是4,最后一个字符的索引应该是4-1=3,而非数组索引2,这就导致了错误输出。
修复后的代码
class Solution { public void sol(String s) { String [] parts = s.split(" "); int left = 0; int right = parts.length - 1; // 打印第一个字符串的第一个字符 System.out.println(parts[left].charAt(left)); System.out.println("_____________"); // 打印最后一个字符串的最后一个字符 String lastString = parts[right]; System.out.println(lastString.charAt(lastString.length() - 1)); } } class Main{ public static void main(String[] args) { Solution s = new Solution(); s.sol("Don't read this"); } }
额外注意事项
如果需要让代码更健壮,建议增加边界判断:
- 先检查
parts.length > 0,避免数组为空时出现ArrayIndexOutOfBoundsException - 检查目标字符串的长度大于0,避免调用
charAt时出现StringIndexOutOfBoundsException
内容的提问来源于stack exchange,提问作者JAVA
相关产品推荐
相关产品推荐

