2016-11-27 7 views
0

私は整数の配列に各整数が何回見つかったかを出力するプログラムを書いています。私はこれを達成しましたが、出力文字列が重複しています。それは配列で二度見しているのでプリント二回「4が2回発生した」、あなたが見ることができるように配列内の整数を数えます。重複する出力文字列を取り除く方法

>run: 
>Please enter integers from 0 to 100: 
1 
2 
3 
4 
4 
5 
0 
// 1 occurs 1 time // 
2 occurs 1 time // 
3 occurs 1 time // 
4 occurs 2 times // 
4 occurs 2 times // 
5 occurs 1 time // 
BUILD SUCCESSFUL (total time: 14 seconds) 

この

が出力されます。

重複を排除する方法については、ちょっと指示が必要です。何でも大歓迎です。あなたは重複を削除配列からセット要素を作る

https://docs.oracle.com/javase/7/docs/api/java/util/Set.html

import java.util.*; 
public class WorkSpace3 { 
    public static void main(String[] args) { 
     int i = 0; 
     int count = 0; 
     int key = 0; 

     System.out.print("Please enter integers from 0 to 100: "); 
     int[] myList = new int[100]; 
     Scanner s = new Scanner(System.in); 
     for (i = 0; i < myList.length; i++) 
     { 
      myList[i] = s.nextInt(); 
      if (myList[i] == 0) 
       break; 
     } 

     while (key < myList.length && myList[key] != 0) { 
      for (i = 0; i < myList.length; i++) 
      { 

       { if (myList[i] == myList[key]) 
        { count++; } } 
      } 


      if (count == 1) 
       System.out.println(myList[key] + " occurs " + count + " time "); 
      if (count > 1) 
       System.out.println(myList[key] + " occurs " + count + " times "); 
      key++; 
      count = 0; 

     } 
    } 
} 
+0

を使用して、これを試してくださいあなたはまだMap' 'について学んだことがありますか?もしそうなら、 'Map 'を作ります。ここで、キーはあなたの番号で、値はその番号の数です。 – Andreas

+0

@アンドレアス私はまだ残念ながら地図を学んだことはありませんが、私はそれを理解しようと努力しています。ありがとうございました! – Frank

答えて

0

あなたが利用できる簡単な方法は、数えた要素にゼロをマークすることです。このアプローチは普遍的なものではありません。エンド・ユーザーが入力シーケンスの終わりをマークするためにゼロを使用するためだけです。

whileループでゼロを検索するのではなく、シーケンスの長さを示す変数を設定することで、この方法を使用するコードをわずかに変更する必要があります。最初にmyList.lengthに設定して、ブレーク時にiにリセットしてください。今度は、この最大数までリストを歩いて、数えて、あなたがすでに数えた要素にゼロをセットすることができます。

0

は、設定された要素を参照してください。

0

Map

Map<Integer,Integer> counts=new HashMap<Integer,Integer>(); 
for (i = 0; i < myList.length; i++) { 
if(counts.contains(myList[i]){ 
counts.put(myList[i],++counts.get(myList[i]); 
}else{ 
counts.put(myList[i],1); 
} 
関連する問題