java文件中已知一个字符串,aaaabbbccc
现想知道有几个a 几个b 几个c
并把这个个数用数组的形式输出来
应该输出  [4,3,3]
这如何实现呀,

解决方案 »

  1.   

    lz可以参考下
    public class TestString { /**
     * @param args
     */
    public static void main(String[] args) {
    String str = "aaaabbbccc";
    Map<Character, Integer> map = new HashMap<Character, Integer>(); Set<Character> keySet = map.keySet();
    for (int i = 0; i < str.length(); i++) {
    char c = str.charAt(i); if (keySet.contains(c)) {
    int num = map.get(c);
    num++;
    map.put(c, num);
    } else {
    map.put(c, 1);
    }
    } System.out.print("[");
    for (Character character : keySet) {
    int num = map.get(character);
    System.out.print(character + " = " + num + ",");
    }
    System.out.print("]");
    }}
      

  2.   


    数组不是一个道理吗
    自己改改就是了
    用俩个数组
    一个当key
    一个当value
      

  3.   


    String s="aaaabbbccc";
    Pattern p=Pattern.compile("(\\w)(\\1)*+");
    Matcher m=p.matcher(s);
       while(m.find()){
    System.out.println(m.group()+":"+(m.end()-m.start()));
       }
      

  4.   

    笨办法写了一个,字符串可任意,(代码里进行排序了.)import java.util.Arrays;
    public class StatisticAString
    {
    public static void main(String[] args)
    {
    String s="";
    Statistic statistic=new Statistic(s); //产生Statistic对象。
    char[] chars = statistic.getCharArray(); //取得结果。
    int[] result = statistic.getCountArray(); System.out.println(Arrays.toString(chars));
    System.out.println(Arrays.toString(result));
    }
    }
    //类Statistic,用于统计字符串中的不同字符,及出现次数。统计之前是按字符排序的。
    class Statistic
    {
    private int[] end=null; //用于保存字符出现次数。
    private char[] chEnd=null; //出现的字符,(排序后的)。
    public Statistic(String s)
    {
    getEveryChar(s);
    }
    public void getEveryChar(String s) //计算。
    {
    if(s==null||s.length()==0) //字符串没赋值或长度为零。
    {
    end=new int[0];
    chEnd=new char[0];
    return;
    } char[] c=new char[s.length()];
    char[] ch=new char[s.length()];
    int[] intArray=new int[s.length()];
    for(int i=0,length=s.length(); i<length ;i++)
    {
    c[i]=s.charAt(i);
    }
    Arrays.sort(c); //排序.
    intArray[0]=1;
    ch[0]=c[0];
    int count=0;
    for(int i=0;i<c.length-1;i++)
    {
    if(c[i+1]==c[i])
    {
    intArray[count]++;
    }
    else
    {
    intArray[++count]++;
    ch[count]=c[i+1];
    }
    }
    end = Arrays.copyOf(intArray,count+1); //紧缩。
    chEnd= Arrays.copyOf(ch,count+1); //紧缩。
    }
    public char[] getCharArray()
    {
    return chEnd;
    }
    public int[] getCountArray()
    {
    return end;
    }
    }
      

  5.   

    LZ有点浮躁哦,
    不能什么都用自定义数组,多用点java提供的工具。
      

  6.   

    String str = "aaabbcceefff";
    int[] counts = new int[26];
    for(char c : str.toCharArray())
    counts[c - 'a']++;
    for(int i = 0; i < 26; i++)
    if(counts[i] > 0)
    System.out.println((char)(i + 'a') + ":" + counts[i]);
      

  7.   

    String str = "aaabbcceefff";
    int[] counts = new int[26];
    for(char c : str.toCharArray())
    {
     counts[c - 'a']++;
    }
       
    for(int i = 0; i < 26; i++)
        if(counts[i] > 0)
            System.out.println((char)(i + 'a') + ":" + counts[i]);
    这是正解
    利用数组,每个字母的ASCII码不同,所以数组下标不同,相同的数组下标的值进行想加得到你想要的结果
      

  8.   

    //写的比较简单,你看是不是你想要的?
    //运行结果[4,3,3]
    public class Tjgs{
    public static void main(String[] args){
    String str="aaaabbbccc";
    int[] a=new int[3];
    for(int i=0;i<str.length();i++){
    if(str.charAt(i)=='a'){
    a[0]+=1;
    }
    if(str.charAt(i)=='b'){
    a[1]+=1;
    }
    if(str.charAt(i)=='b'){
    a[2]+=1;
    }
    }
    System.out.println("["+a[0]+","+a[1]+","+a[2]+"]");
    }
    }
      

  9.   

    这样?public class StringTest { /**
     * @param args
     */
    public static void main(String[] args) {
    String str = "dfdekjkaamkdkdeifdfdfjdf";
    while(str.length() > 0) {
    char tempChar = str.charAt(0);
    int lengthOld = str.length();
    str = str.replaceAll(tempChar + "", "");
    int lengthNew = str.length();
    System.out.println(tempChar + "的个数为:" + (lengthOld - lengthNew));
    }
    }
    }
      

  10.   

    public static void main(String[] args) 
    {
    String str = "cb+xz==bv-avd-vgd";
    charCount(str);
    } public static void charCount(String str)
    { //定义一个可排序的集合。
    TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
    //1,将字符串变成字符数组。
    char[] chs = str.toCharArray();
    //2,遍历数组。
    for(int x=0; x<chs.length; x++)
    {
    if(!(chs[x]>='a' && chs[x]<='z' || chs[x]>='A' && chs[x]<='Z'))
    continue;
    //将字母作为键去查map集合。获取对应的值。
    Integer i = tm.get(chs[x]);
    if(i==null)
    {
    tm.put(chs[x],1);
    }else
    {
    i++;
    tm.put(chs[x],i);
    }

    }
    System.out.println(mapToString(tm));

    }
    private static String mapToString(TreeMap<Character,Integer> tm)
    {
    StringBuilder sb = new StringBuilder();
    Iterator<Character> it = tm.keySet().iterator();
    while(it.hasNext())
    {
    Character key = it.next();
    Integer value = tm.get(key);
    sb.append("["+key+","+value+",");//如果不想显示字母就把key和','去掉
    }
                    sb.append("]");
    return sb.toString();
    }