2015-04-28 95 views
0

我需要在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; 
     } 
    } 
} 
+0

这些都是** **字母,字母不。字母表是一组字母,如英语A-Z –

回答

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()+" "); 
    } 
} 

} 
+0

Hi @Pooja已导入所有必需的类 –

+0

您好@poojasharma,基本地图是用来存储对象的键和值的格式,在这里我已经把它的类型键=字符和值=整数,我已经将字符串转换为字符数组,并遍历该数组,如果地图有一些条目与那个特殊的字符,然后我增加它计数一个其他我插入到地图对象的条目和遍历该数组后,我会知道该字符出现在该字符串的次数。如果您仍然有任何困惑,请随时致电。 –

+0

Hi @poojasharma欢迎您。 –

1

您可以按照这些步骤。

  1. 阅读输入。
  2. 将输入分割为字符。 (您可以从String获得char[]
  3. 重复char[]并且您可以使用Map<Character,Integer>来存储字符与出现次数。
  4. 现在你的地图包含所有出现的字符。
0

如果你只使用字母,试试这个方法

采取大小的数组26

分配阵列0

让指数像0-A,1字母位置-b ... 25-z

OOP通过输入字符串并增加相应的索引位置,如

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

打印结果相应

0

使用equals方法来比较参考对象值。有时它会堆积在堆中。因此,比较引用对象的值时,最好使用equals方法而不是“==”。

Array是一个引用类型的对象。

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; 


    } 


    } 

} 

试试看看这个代码。您可以根据您在应用程序中的要求修改它。

+0

输出不完全正确通过:PPOKJgot match2 P2, P1, O1, K1, J1,它应该是P2,o1,k1,j1 –

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)); 
    }