如何计算字符串中的字母数并删除输出中的重复字母

时间:2016-06-18 10:56:57

标签: java

嘿,我是java编程的初学者,我编写了一个程序来计算字符串中出现的次数,我想改进这段代码。

import java.io.*;
public class Letters
{
    public static void main(String let[]) throws IOException
    {
       InputStreamReader r = new InputStreamReader(System.in);
        BufferedReader b = new BufferedReader(r);
        System.out.println("Enter The Sentense");
        String s = b.readLine();
        String store="";
        String store1="";

        for(int i=0;i<=s.length()-1;i++)
        {
            int count =0;
            store=s.charAt(i)+"";

            for(int j=0;j<=s.length()-1;j++)
            {
                store1=s.charAt(j)+"";
                if(store.equals(store1))
                {
                    ++count;
                }
            }
            System.out.println(store+" : "+count);
        }
    }
}

我得到的输出是

Enter The Sentense
ddooooonnneeeeee
d : 2
d : 2
o : 5
o : 5
o : 5
o : 5
o : 5
n : 3
n : 3
n : 3
e : 6
e : 6
e : 6
e : 6
e : 6
e : 6

但我希望得到像我这样的输出

Enter The Sentense
ddooooonnneeeeee
d:2
o:5
n:3
e:6

任何建议我该怎么做。

4 个答案:

答案 0 :(得分:0)

取一个字符数组来保持每个字母表的轨迹。 像

这样的东西
int countLetter[] = new int[26];

然后

 for(int i=0;i<=s.length()-1;i++)
        {
        countLetter[s.charAt(i) - 97] ++;
  }

然后打印内容

答案 1 :(得分:0)

您可以拥有一个HashMap,其键是您要计算的字符,每次遇到该字符时,您只需更新+1的{​​{1}}值即可计算/发生。

以下是一个例子:

HashMap

最后,这是更新角色频率的功能

//the frequency hashMap
HashMap<String, Integer> characterFrequencyMap = new HashMap<String, Integer>();
//here you reach characters of your string

    for(int x=0; x< s.length; x++){
        if(!s[x].equalsIgnoreCase(" ") )
        updateFrequencies(s[x].toLowerCase());
    }

我希望这会有所帮助。请试一试,让我知道。

答案 2 :(得分:0)

以下代码将帮助您使用HashMap Collection实现此目的,该HashMap Collection不允许重复键。

---
title: This is a great title. 
author: Author Name
abstract: This is a great abstract
---

答案 3 :(得分:-1)

import java.io.*;
import java.util.TreeSet;
public class Letters
{
    public static void main(String let[]) throws IOException
    {
       InputStreamReader r = new InputStreamReader(System.in);
        BufferedReader b = new BufferedReader(r);
        System.out.println("Enter The Sentense");
        String s = b.readLine();
        String store="";
        String store1="";
        TreeSet<String> ts = new TreeSet<String>();      
        for(int i=0;i<=s.length()-1;i++)
        {
            int count =0;
            store=s.charAt(i)+"";

            if(ts.contains(store) == false)
            { 
              for(int j=0;j<=s.length()-1;j++)
              {
                store1=s.charAt(j)+"";
                if(store.equals(store1))
                {
                    ++count;
                }
              }
             System.out.println(store+" : "+count);
             ts.add(store);
           }
        }
    }
}