gpt4 book ai didi

java - 计算字符串中字符出现的次数

转载 作者:行者123 更新时间:2023-12-01 19:04:23 25 4
gpt4 key购买 nike

我正在尝试编写一个Java程序,它接受一个字符串作为输入,并计算字符串中字符出现的次数,然后打印一个新字符串,其中包含该字符,后跟出现次数。

EG

输入字符串:

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)

这将一直持续下去,直到它从末尾掉下来......当i与字符串的长度相同时,它将要求输入超出字符串末尾的字符。您可能想要:

while (i < str.length() && str.charAt(i) == ch)

您还需要在较大循环的每次迭代开始时将 count 设置为 0 - 毕竟计数会重置 - 并且会发生变化

count = count + i;

到:

count++;

...或者去掉counti。毕竟,它们总是具有相同的值(value)。就我个人而言,我只使用一个变量,在循环内声明并初始化。事实上,这是一个一般的风格点 - 在需要时声明局部变量比在方法顶部声明它们更干净。

但是,你的程序将永远循环,因为这没有做任何有用的事情:

str.substring(count);

字符串在 Java 中是不可变的 - substring 返回一个字符串。我想你想要:

str = str.substring(count);

请注意,这仍然会为“aabbaa”输出“a2b2a2”。这样可以吗?

关于java - 计算字符串中字符出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10749176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com