cope函数是把string对象字符串去掉空格,然后返回string对象
str是输入的字符串对象//计算每个字母出现的次数
String str1=cope(str);
int n=1;
do{
//从字符串的第二个数开始比较,计算地一个字符出现的次数
for(int j=1;j<str1.length();j++){
if(str1.charAt(j)==str1.charAt(0))
n++;
}
//将统计过的字母全部转化为空格
str1=str1.replace(str1.charAt(0),' ');
//输出统计字母出现的总次数
System.out.println("字母"+str1.charAt(0)+"的个数为:"+n);
//调用cope函数将str1字符串空格去掉
str1=cope(str1);
//n重置为1
n=1;
}while(str1.length()!=0);
str是输入的字符串对象//计算每个字母出现的次数
String str1=cope(str);
int n=1;
do{
//从字符串的第二个数开始比较,计算地一个字符出现的次数
for(int j=1;j<str1.length();j++){
if(str1.charAt(j)==str1.charAt(0))
n++;
}
//将统计过的字母全部转化为空格
str1=str1.replace(str1.charAt(0),' ');
//输出统计字母出现的总次数
System.out.println("字母"+str1.charAt(0)+"的个数为:"+n);
//调用cope函数将str1字符串空格去掉
str1=cope(str1);
//n重置为1
n=1;
}while(str1.length()!=0);
你能确定你的cope方法没问题?
我自己写了个 public static void main(String[] args) {
String str = " asd tra uyda ";
String str1=cope(str);
int n=1;
do{
//从字符串的第二个数开始比较,计算地一个字符出现的次数
for(int j=1;j<str1.length();j++){
if(str1.charAt(j)==str1.charAt(0))
n++;
}
//将统计过的字母全部转化为空格
str1=str1.replace(str1.charAt(0),' ');
//输出统计字母出现的总次数
System.out.println("字母"+str1.charAt(0)+"的个数为:"+n);
//调用cope函数将str1字符串空格去掉
str1=cope(str1);
//n重置为1
n=1;
}while(str1.length()!=0);
}
public static String cope(String str){
String s = "";
String[] ss = str.split(" ");
for(int i = 0;i < ss.length;i++){
s = s.concat(ss[i]);
}
return s;
}
}
还有
str1=str1.replace(str1.charAt(0),' ');
//输出统计字母出现的总次数
System.out.println("字母"+str1.charAt(0)+"的个数为:"+n);
这两行应该换下位置,不然字母显示不出的,全是空格。
str1.length()!=0的话,就一直循环了
谢谢,已经解决了,我的cope函数的确有问题,字符数组建立string对象时我 不注意大小,导致string对象的length一直是不变的,后面的循环就有严重后果的问题
还是感谢,我最后还是加上了&&str1.charAt(0),如果cope没每次缩减空间的话,避免出现第一个为空格,然后一直循环下去的悲剧