java计算字符串中字符出现的次数_java – 计算字符串中字符出现次数
參見(jiàn)英文答案 > Java compressing Strings????????????????????????????????????18個(gè)
我正在嘗試編寫(xiě)一個(gè)Java程序,它接受一個(gè)字符串作為輸入,并計(jì)算一個(gè)字符串中出現(xiàn)的字符數(shù),然后打印一個(gè)新字符串,該字符串后跟no出現(xiàn)的字符.
例如.
輸入字符串:
aaaabb
輸出字符串:
a4b2
輸入字符串:
aaaaabbbc
輸出字符串:
a5b3c1
我發(fā)布了我的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);
}
}
}
解決方法:
這就是問(wèn)題:
while(str.charAt(i)==ch)
這將繼續(xù)下去直到它結(jié)束…當(dāng)我與字符串的長(zhǎng)度相同時(shí),它將要求超出字符串末尾的字符.你可能想要:
while (i < str.length() && str.charAt(i) == ch)
您還需要在較大循環(huán)的每次迭代開(kāi)始時(shí)將計(jì)數(shù)設(shè)置為0 – 計(jì)數(shù)重置,畢竟 – 并更改
count = count + i;
要么:
count++;
…或擺脫伯爵或我.畢竟,他們總是會(huì)有相同的價(jià)值.就個(gè)人而言,我只使用一個(gè)變量,在循環(huán)中聲明并初始化.事實(shí)上,這是一個(gè)通用的樣式點(diǎn) – 在需要時(shí)聲明局部變量更為清晰,而不是在方法的頂部聲明它們.
但是,那么你的程序?qū)⒂肋h(yuǎn)循環(huán),因?yàn)檫@沒(méi)有做任何有用的事情:
str.substring(count);
字符串在Java中是不可變的 – substring返回一個(gè)新字符串.我想你想要:
str = str.substring(count);
請(qǐng)注意,這仍然會(huì)為“aabbaa”輸出“a2b2a2”.這樣可以嗎?
標(biāo)簽:string-parsing,java,string,exception
來(lái)源: https://codeday.me/bug/20191002/1843137.html
總結(jié)
以上是生活随笔為你收集整理的java计算字符串中字符出现的次数_java – 计算字符串中字符出现次数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 减肥可以吃麻薯吗
- 下一篇: oracle 取英文排序,Oracle中