标签:string-parsing java string exception
参见英文答案 > Java compressing Strings 18个
我正在尝试编写一个Java程序,它接受一个字符串作为输入,并计算一个字符串中出现的字符数,然后打印一个新字符串,该字符串后跟no出现的字符.
例如.
输入字符串:
aaaabb
输出字符串:
a4b2
输入字符串:
aaaaabbbc
输出字符串:
a5b3c1
我发布了我的java代码.
它正在抛出StringOutOfBoundException
/*Write a routine that takes as input a string such as "aabbccdef" and o/p "a2b2c2def" or "a4bd2g4" for "aaaabddgggg".*/
import java.util.Scanner;
public class CountingOccurences {
public static void main(String[] args) {
Scanner inp= new Scanner(System.in);
String str;
char ch;
int count=0;
System.out.println("Enter the string:");
str=inp.nextLine();
while(str.length()>0)
{
ch=str.charAt(0);
int i=0;
while(str.charAt(i)==ch)
{
count =count+i;
i++;
}
str.substring(count);
System.out.println(ch);
System.out.println(count);
}
}
}
解决方法:
这就是问题:
while(str.charAt(i)==ch)
这将继续下去直到它结束…当我与字符串的长度相同时,它将要求超出字符串末尾的字符.你可能想要:
while (i < str.length() && str.charAt(i) == ch)
您还需要在较大循环的每次迭代开始时将计数设置为0 – 计数重置,毕竟 – 并更改
count = count + i;
要么:
count++;
…或摆脱伯爵或我.毕竟,他们总是会有相同的价值.就个人而言,我只使用一个变量,在循环中声明并初始化.事实上,这是一个通用的样式点 – 在需要时声明局部变量更为清晰,而不是在方法的顶部声明它们.
但是,那么你的程序将永远循环,因为这没有做任何有用的事情:
str.substring(count);
字符串在Java中是不可变的 – substring返回一个新字符串.我想你想要:
str = str.substring(count);
请注意,这仍然会为“aabbaa”输出“a2b2a2”.这样可以吗?
标签:string-parsing,java,string,exception 来源: https://codeday.me/bug/20191002/1843137.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。