-1

我正在编写一个代码来计算java中字符串数组中的不同单词,然后将这些不同的单词存储在一个数组中,然后在另一个数组中计数。如果字符串数组类似于 String[] appName ={"123", "abc", "Twitter", "123", "abc","123","Twitter", "abc","abc"}; 然后在一个数组 {"123","abc","Twitter"} 中应该出现,而在另一个数组中计数。但是第 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);
    }     
}
4

3 回答 3

0

在对变量进行操作之前,您应该先检查 null

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

变成

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

但使用 aSet<String>会更好

于 2013-09-11T05:32:10.443 回答
0

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

Set<String> mySet= new HashSet<String>(Arrays.asList(appName));
String[] distinctAppName= mySet.toArray(new String[mySet.size()]);
于 2013-09-11T05:39:24.100 回答
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));
}
}

现场演示

于 2013-09-11T05:40:35.670 回答