从输入中计算字母表

时间:2015-04-28 04:26:01

标签: java

我需要在java中编写一个代码,它将输入作为用户的字符串,并打印每个字母表的重复次数。我已经编写了代码但没有得到正确的输出。

input:ppooj
output:p1,o2,j1

我的代码是:

import java.util.Scanner;

public class Test 
{
    public static void main(String[] args)
    {
        System.out.println("Hello");
        System.out.println("ENTER ANY STRING");
        Scanner sc= new Scanner(System.in);

        String[] arr= new String [5];

        for(int i=0; i<5 ;i++ )
        {
            arr[i]= sc.next();
            // getting input
        }

        for ( int i=0;i<5;i++){
            System.out.print(""+ arr[i]);
        }

        int count=1;
        int rep=0;
        int i=0;

        for ( i=0;i<5;i++)
        {
            //traverse 
            System.out.println("in first loop" + ""+ arr[i]);

            for(int k=i+1; k<5;k++)
            {
                System.out.println("" + arr[k]);

                //matching with each and every one
                if(arr[i]==arr[k])
                {
                    count++;
                    System.out.println("got the match" + count);
                }
            }
            System.out.println(arr[i]+count+",");
            count=1;
        }
    }
}

5 个答案:

答案 0 :(得分:1)

您可以按照以下步骤操作。

  1. 阅读输入。
  2. 将输入拆分为字符。 (您可以从char[]
  3. 获取String
  4. 迭代char[],您可以使用Map<Character,Integer>来存储字符与出现次数。
  5. 现在,您的地图包含所有出现的字符。

答案 1 :(得分:0)

如果您只使用字母,请尝试使用此方法

采用大小为26的数组

将数组赋值为0

让索引为字母表位置,如0-a,1-b ... 25-z

遍历输入字符串并增加相应的索引位置,如

 array[inputString.charAt(i)-'a']++;

相应地打印结果

答案 2 :(得分:0)

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;

public class AlphaCount {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter a string");
    String str = sc.nextLine();
    Map<Character, Integer> map = new HashMap<Character, Integer>(); 
    char[] chArray = str.toCharArray();
    for(char c : chArray){
        if(map.containsKey(c)){
            map.put(c, map.get(c)+1);
        }
        else{
            map.put(c, 1);
        }
    }
    for (Entry<Character, Integer> entry : map.entrySet())
    {
        System.out.print(entry.getKey() + "" + entry.getValue()+" ");
    }
}

}

答案 3 :(得分:0)

使用equals方法比较参考对象的值。有时它会在堆中被攻击。所以,最好在&#34; ==&#34;上使用equals方法。同时比较参考对象的值。

数组是一个引用类型对象。

    import java.util.Scanner;
    public class Test 
    {


    public static void main(String[] args)
    {
        System.out.println("Hello");
        System.out.println("ENTER ANY STRING");
        Scanner sc= new Scanner(System.in);


        String[] arr= new String [5];

        for(int i=0; i<5 ;i++ )
        {
            arr[i]= sc.next();
            // getting input



        }

        for ( int i=0;i<5;i++){

            System.out.print(""+ arr[i]);


        }


        int count=1;
        int rep=0;
        int i=0;

      for ( i=0;i<5;i++)
     {
            //traverse 
           // System.out.println("in first loop" + ""+ arr[i]);

            for(int k=i+1; k<5;k++)
        {
             //   System.out.println("" + arr[k]);

                //matching with each and every one

            if(arr[i].equals(arr[k]))
            {
                count++;
                System.out.println("got the match" + count);


            }
        }
            System.out.println(arr[i]+count+",");
            count=1;


  }


    }

}

试试这段代码。您可以根据应用程序中的要求对其进行修改。

答案 4 :(得分:0)

您可以尝试使用字符串映射作为关键字:

    Map<String,Integer> map = new HashMap<String,Integer>();
    // set value = 0 to characters from a-z.
    for( int i = 'a'; i < 'z'; i++ ){           
        map.put(String.valueOf((char)i), 0);
    }

    // supposed you have this as your input array. This should be read from file.
    String[] arr= {"p","p","o","o","j"};

    // count the duplicated characters.
    for(int i=0;i<arr.length;i++){
        map.put(arr[i],map.get (arr[i])+1);
    }

    // remove duplicated characters in array.
    List<String> list= new ArrayList<String>(new LinkedHashSet<String>(Arrays.asList(arr)));

    // print result.
    for (String string : list) {
        System.out.print(string+map.get(string));
    }
相关问题