java - 这个程序是关于java中的字符串压缩的
问题描述
我是编码新手,所以请指导我解决这个问题。我从用户设置输入字符串 s 并声明 StringBuilder sb 和整数类型变量 consec
在“if”条件下,我在IndexOutOfBound
这里遇到异常:
for (int i=0;i<s.length();i++) {
consec++;
if(s.charAt(i)!=s.charAt(i+1) || i+1>=s.length()) {
sb.append(s.charAt(i));
sb.append(consec);
consec=0;
}
}
解决方案
这是因为在循环的最后一次迭代中,您正在访问不在数组中的元素(索引高于数组的大小),所以试试这个:
for(int i=0;i<s.length()-1;i++){ //<<See this
//your logic
}
当字符串的长度是偶数时,您需要在for
循环之后明确地进行边缘情况检查。例如,
for(int i=0;i<s.length()-1;i++){ //<<See this
//your logic
}
if(s.length()%2==0){
//your logic when length is even and loop has ignored last character.
}
推荐阅读
- delphi - NotificationCenter Delphi,MacOS下的异常
- java - 跨度未使用 OpenTelemetry Java 导出到 Jaeger 收集器
- r - 多个变量的 Pivot_longer
- php - Wordpress Functions.php 过滤器 get_metadata 始终为空
- text-classification - 导出谷歌云 auotml 模型
- python - 除了 list 之外,迭代 map() 函数的各种方法是什么
- install4j - install4j 中是否有任何类路径长度限制?
- maven - Maven - antrun 插件无法创建任务或类型属性文件
- javascript - 使用变量调用 javascript 类对象
- python - 使用 BeautifulSoup4 从网站获取 pdf 文件以进行抓取