计算java中String数组中的单词

时间:2013-09-11 05:27:12

标签: java arrays string count word

我正在编写一个代码来计算java中字符串数组中的不同单词,然后将这些不同的单词存储在一个数组中,并计入另一个数组。 如果字符串数组类似于String [] appName = {“123”,“abc”,“Twitter”,“123”,“abc”,“123”,“Twitter”,“abc”,“abc”};  然后在一个数组{“123”,“abc”,“Twitter”} shoud来到,而在其他阵列有数。 但是在第21行有一个例外。任何帮助都是适合的。

public class counts {

    /**
     * @param args
     */
    public static  void countWords(String[] appName){
          int count =1;
          int[] count1 = new int[appName.length];


          String[] array= new String[12];

            for(int k= 0 ;k< appName.length;k++)

            {
                 if(array.length>0)
                 {
                for(int l =0; l<array.length;l++)
                {
                if(!array[l].equals(appName[k])|| array[l]== null)

                {
                    array[k] = appName[k];
                }
                }
                System.out.println(array[k]);
                 }
                 }
          for (int i=0; i<appName.length; i++){
          String temp1 = appName[i];
          //System.out.println(temp + " ");


          count = 1;
          for(int j=i+1; j<appName.length; j++){
          String temp2= appName[j];
          if(temp1.equals(temp2))
          {
              count++;
          }




          }
           count1[i] = count;

           System.out.println(count1[i]);
          }

      }



    public static void main(String[] args) {
        // TODO Auto-generated method stub

         String[] appName = {"123", "abc", "Twitter", "123", "abc","123","Twitter", "abc","abc"};
          countWords(appName);
    }     
}

3 个答案:

答案 0 :(得分:0)

在操作变量

之前,应首先检查null
if(!array[l].equals(appName[k])|| array[l]== null)

变为

if(array[l]== null||!array[l].equals(appName[k]))

但使用Set<String>会更好

答案 1 :(得分:0)

要获取唯一值,您可以执行以下操作:

Set<String> mySet= new HashSet<String>(Arrays.asList(appName));
String[] distinctAppName= mySet.toArray(new String[mySet.size()]);

答案 2 :(得分:0)

您可以尝试以下方式。这可能会对你有帮助。

public class Counts {
public static void main(String[] args) {
    String[] appName = {"123", "abc", "Twitter", "123", "abc", 
                                             "123", "Twitter", "abc", "abc"};
    countWords(appName);
}

public static void countWords(String[] appName) {
    Map<String, Integer> map = new HashMap<>();
    for (String i : appName) {
        Integer val = map.get(i);
        if (val == null) {
            val = 0;
        }
        map.put(i, val + 1);
    }
    String[] uniqueStr = new String[map.size()];
    int[] count = new int[map.size()];
    int i = 0;
    for (Map.Entry<String, Integer> entry : map.entrySet()) {
        uniqueStr[i] = entry.getKey();
        count[i] = entry.getValue();
        i++;
    }
    System.out.println("unique String array: "+ Arrays.toString(uniqueStr));
    System.out.println("String count array: "+ Arrays.toString(count));
}
}

直播demo