给一个任意字符组成的字符串统计每个字符出现的次数,例如:String str = “java@list#有中文啊,jiu zhemechangle”,要求只用一个for循环或while循环;(注一下:这个题是考写代码的格式和字符中文的处理)

解决方案 »

  1.   

    public static void func(String str){
    HashMap<Character, Integer> map = new HashMap<Character, Integer>();
    for (int i = 0; i < str.length(); i++){
    char ch = str.charAt(i);
    if(map.get(ch) == null){
    map.put(ch, 1);
    }else{
    int cnt = map.get(ch);
    map.put(ch, ++cnt);
    }
    }

    for(Entry<Character, Integer> entry : map.entrySet()){
    System.out.println(entry.getKey() + ":" + entry.getValue());
    }
    }
      

  2.   

    public class Test {
    public int count(String str, char c) {
    int n = 0;// 计数
    for (int i = 0; i < str.length(); i++) {
    char ch = str.charAt(i);
    if (ch == c) {
    n++;
    }
    }
    return n;
    } public static void main(String[] args) {
    Test t = new Test();
    String str = "java@list#有中文啊,jiu zhemechanglejava@list#有中文啊,jiu zhemechangle";
    int n = t.count(str, '中');
    System.out.println(n);
    }
    }
      

  3.   

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String str = "java@list#有中文啊,jiu zhemechangle";
    char []arr = str.toCharArray();
    HashMap<String, Integer> map = new HashMap<String, Integer>();

    for(int i =0 ;i<arr.length;i++){
    char c = arr[i];
    String [] s = str.split(c+"");
    if(s == null || s.length ==0){
    map.put(c+"", 0);
    }else{
    map.put(c+"", s.length-1);
    }
    }

    Iterator it = map.entrySet().iterator();

    while(it.hasNext()){
    Map.Entry entry = (Map.Entry)it.next();
    System.out.println(entry.getKey()+"--"+entry.getValue());
    }

    }
      

  4.   

    java使用unicode,没有中文问题
    算法...网上烂大街了 ( ▔___▔)y-~