一个小程序,输出字符串str中每个小写字母的数量,按字母顺序排列。
我是从小写字母a开始删除字符,然后用.length()计算数量,a++,重复操作,代码如下。
结果发现大写字母和数字也能被计算,可是他们不是排在a前面吗,a++为什么会取到大写字母和数字的值。public class Test1 { public static void main(String[] args) {
String str="acklabe22fdADADVjkln";
char chr ='a';
String result="";
while (str.length()>0) {
int l1=str.length();
String oldstr=new String().valueOf(chr);
str=str.replace(oldstr, "");
int count=l1-str.length();
if(count>0){
result+=count+oldstr+" ";
}
chr+=1;
}
System.out.println(result);
}
}

解决方案 »

  1.   


    package com.youyu.day0417;public class Test { public static void main(String[] args) {

    lowcaseCount("sdDSSLKAFJddjsklfAFDK5445");
    }

    //小写字母 a-x 对应int范围 97-120
    public static int lowcaseCount(String str){

    //计数器
    int count=0;

    for (int i = 0; i < str.length(); i++) {

    //获取单字符
    char c=str.charAt(i);


    if(97<=(int)c &&(int)c<=120){

    count++;
    System.out.println(c);
    }

    }
    System.out.println(count);
    return count;
    }

    }
      

  2.   

    我知道这样可以取到小写字母,但是我很好奇为什么‘a’++会取到大写字母和数字呢?它们不是排在a的ASICC前面吗?
      

  3.   

    public class Test1 { public static void main(String[] args) {
    String str="acklabe22fdADADVjkln";
    char chr ='a';
    String result="";
    while (str.length()>0) {
    //注意你的结束条件,当所有小写字母都遍历过后,字符串Str的值为“22ADADV”,length>0,所以还会继续执行下去
    int l1=str.length();
    String oldstr=new String().valueOf(chr);
    str=str.replace(oldstr, "");
    int count=l1-str.length();
    if(count>0){
    result+=count+oldstr+" ";
    }
    chr+=1;
    }
    System.out.println(result);
    }
    }