计算 JTextArea 中字符的出现次数

Count occurrence of characters in JTextArea

我有这个项目,我必须计算用户在 JTextArea 中输入的每个字符,输出字母及其在 JTextArea 中出现的次数。我的代码的工作方式是计算用户在 JTextArea 中输入的每个字符,但我需要做的是,如果字符重复,它只会显示一次,并显示相应的计数。谁能帮忙? 这是我的代码。

        btn.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                            
            String text = textbox1.getText();
            int num[] = new int [MAX_CHAR];
            int size = text.length();
            
              for(int i = 0; i < size; i++ ) {
                num[text.charAt(z)]++;  
                            
                textbox6.append("'" + text.charAt(i) + "' -" + 
                               num[text.charAt(i)] + ", \n");   
              }
            }
       }

例如textbox1.setText("Here's an example") 我的代码所做的是打印 JTextArea 中的每个字符,然后计算有多少个字符是这样的 'h' - 1, 'e' - 1, 'r' - 1, 'e' - 2, ''' - 1, 's' - 1, ' ' - 1, 'a' - 1, 'n' - 1, ' ' - 2, 'e' - 3, 'x' - 1, 'm' - 1, 'p' - 1, 'l' - 1, 'e' - 4

输出应该只显示一次重复的字符及其相应的计数,即字符串中有多少个字符。 像这样 'h' - 1, 'e' - 4, 'r' - 1, ''' - 1, 's' - 1, ' ' - 2, 'a' - 2, 'n' - 1, 'x' - 1, 'm' - 1, 'p' - 1, 'l' - 1

你必须先计数,然后使用另一个循环打印它。

btn.addSelectionListener(new SelectionAdapter() {
    @Override
    public void widgetSelected(SelectionEvent e) {
                    
        String text = textbox1.getText();
        int num[] = new int [MAX_CHAR];
        int printed[] = new int [MAX_CHAR];
        int size = text.length();
        
        for(int i = 0; i < size; i++ ) {
            num[text.charAt(i)]++;
        }
        for(int i = 0; i < size; i++ ) {
            if (printed[text.charAt[i]] == 0) {
                printed[text.charAt[i]] = 1;
                textbox6.append("'" + text.charAt(i) + "' -" + 
                                num[text.charAt(i)] + ", \n");
            }
        }
    }
}

这里使用打印数组来记录已经打印了哪些字符。