计算文本文件中的字符

时间:2014-03-22 06:28:33

标签: java

嘿伙计们我正在尝试编写一个代码来计算文本文件中的字符。

ex:AAABBbbcC

3A 2B 2b 1c 2C

但我不知道如果他们没有分开,如何计算像(AAA)这样的字符。

我试过这个,但它并不像递归一样工作

String s = "aasjkkk";

int count1 = 0;

int count2 = 0;

char karakter1 = 0;

char karakter2 = 0;

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

    if(s.charAt(i) == s.charAt(i+1)) {

        karakter1 = s.charAt(i);
        count1 += 1;

        System.out.print(count1 + " " + karakter1 + " ");

    }
    else if(s.charAt(i) != s.charAt(i+1)) {

        karakter1 = s.charAt(i);

            karakter1 = 1;

            karakter2 = s.charAt(i+1);

            karakter2 = 1;

            System.out.print(count1 + " " + karakter1 + " " + count2 + " " + karakter2 + " ");
    }


} 

2 个答案:

答案 0 :(得分:1)

由于这看起来像是一个家庭作业,我可以建议你这样做:

  1. 创建HashMap
  2. 从文件的开头到结尾循环。如果你有一个新的字符,那么设置一个新的键到HashMap,其值为1;如果没有,只需加一个旧字符的当前值
  3. 玩得开心!!

答案 1 :(得分:0)

必须显示您之前尝试过的内容。

我认为您可能已经考虑过将String转换为char数组,迭代等等......

嗯,@ bubuzz建议很好,这里有一个实现:

公共类ClasesObjetos {

public static void main(String[] args) {

    String s = "This is a single String";

    HashMap<Character, Integer> m = new HashMap();

    for (Character c : s.toCharArray()) {

        if (!c.equals(" ")) {

            if (m.get(c) == null )
                m.put(c, 1);

            else {
                int i = (int) m.get(c) + 1;
                m.put(c, i);
            }

        }
    }

    for (Character c : m.keySet()) {
        System.out.println(c + " ---> " + m.get(c));
    }

}  

}

尝试一下,你会发现它忽略了空格。它会计算任何符号,你应该加上if个检查。