2011-08-12 20 views
0

私は配列内の重複を見つけるためにこれをコード化し、重複した要素が見つかるたびにカウントをインクリメントしますが、このプログラムは動作しますが、if文の後にelse文を置くと、ループで配列内の2つの要素が一致していない時はいつでもこのコードで何が問題になっていますか?

public class arraysexpmnt { 
    public static void main(String[] args) { 
    int[] arr={2,2,2,5,7,8,9,9,8,7}; 
    int count=0; 
    for(int i=0;i<arr.length;i++){ 
     for(int j=i+1;j<arr.length;j++){ 
      if(arr[j]==arr[i]){ 
       count++; 
       System.out.println("Duplicate found! Original is " + arr[i] + " and match is " +arr[j]+" and the count of similar elements is "+count); 
      } 

     } 

    } 


} 

}

+0

これはうまくいくようです。あなたはあなたの問題をより明確に説明できますか? – tskuzzy

+2

あなたはまた、失敗したコードを投稿できますか? – mcabral

+0

コードの最後に 'for'ループの外側に' if(count> 0)System.out.println( "リストに重複がありません")のようなものがありますか? – bdares

答えて

1

else節はかなり一般的なものである。..実行されます...要素を重複しています。そこに同じトレースを入れてみてください。

+0

else節で私は配列に重複があっても実行されるprintln文を入れました... else節を削除すると私のプログラムはうまく動作しますが、何が... –

+0

はいそれは実行されます。それはいいです**。 elseがこれまでに実行されない唯一のシナリオは、配列が繰り返し要素(例えば、2,2,2,2)だけを含む場合です。配列に重複が含まれていない場合(おそらく私たちにこれを話したことはありませんが)、それ以外のものでそれをしたい場合は、おそらく何かを出力したいと思うでしょう。それは間違っている**。私の答えをもう一度読んで考えてください。 –

+0

私は今、理解していますが、配列の要素が重複していないことを印刷したい場合はどうすればいいでしょうか... –

0

コードはわかりやすく表示されます。あなたのコードが現在のループで重複した要素を見つけられない場合、それはあなたが言っているようにelse節を実行するはずです。それがあなたが望む機能でない場合は、ロジックを変更する必要があります。あなたのコードで何をしたいのですか?

+0

else節に重複があってもprintln文を実行しました。配列内で...私はelse節を削除すると私のプログラムは不思議に思えますが、もし私がそれを含んでいればelse節が何であっても出力されます... –

1

私はあなたが探しのコードがあると思う:

public class arraysexpmnt { 

    public static void main(String[] args) { 
     int[] arr={2,2,2,5,7,8,9,9,8,7}; 
     int count=0; 
     for(int i=0;i<arr.length;i++){ 
      boolean found = False; 
      for(int j=i+1;j<arr.length;j++){ 
      if(arr[j]==arr[i]){ 
       count++; 
       System.out.println("Duplicate found! Original is " + arr[i] + " and match is " +arr[j]+" and the count of similar elements is "+count); 
       found = True; 
      } 
      } 
      if (!found) { 
       System.out.println("No duplicate found for Original: " + arr[i]); 
      } 
     } 

    } 
    } 
0

あなたのコード出力:あなたの配列がソートされた場合は、マッチングjを見つけるたび

Duplicate found! Original is 2 and match is 2 and the count of similar elements is 1 
Duplicate found! Original is 2 and match is 2 and the count of similar elements is 2 
Duplicate found! Original is 2 and match is 2 and the count of similar elements is 3 
Duplicate found! Original is 7 and match is 7 and the count of similar elements is 4 
Duplicate found! Original is 8 and match is 8 and the count of similar elements is 5 
Duplicate found! Original is 9 and match is 9 and the count of similar elements is 6 

、その後、あなたは私をインクリメントすることができます。これにより、3つ以上の状況についての余分な報告が防止されます。各i反復でカウントをリセットすることもできます。

あなたの配列は完全にソートされていません。重複を排除したい場合は、別の方法が望ましいかもしれません。

+0

私はちょうど重複を見つける方法をチェックしていました配列では、私はあなたのアプローチを試みた、それは不思議のように動作します.. –

関連する問題