-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

次の方法を試すことができます。これはあなたを助けるかもしれません。

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 に答える
0

変数を操作する前に、最初に null をチェックする必要があります

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

になる

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

しかし、を使用するSet<String>方が良いでしょう

于 2013-09-11T05:32:10.443 に答える