java计算字符串中字符出现的次数_java – 计算字符串中字符出现次数
參見英文答案 > 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
總結
以上是生活随笔為你收集整理的java计算字符串中字符出现的次数_java – 计算字符串中字符出现次数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 减肥可以吃麻薯吗
- 下一篇: oracle 取英文排序,Oracle中