2017-10-16 15 views
-2

これは、最小値と配列内で発生する時間を単純に返すプログラムです。配列が{13、28、5、11}で満たされている場合は、minを5、countを1として返します。ただし、配列が指定の数値で満たされている場合は、どうすればこの問題を解決できますか?現在の最小値が変更されるたびありがとうintの出現回数をカウントする

public class Test4{ 
    public static void main(String[] args){ 
     int[] array = {4, 20, 30, 4, 25, 25, 6, 2, 29, 27, 1, 29, 11, 6, 10, 17, 8}; 
     findMin(array); 
    } 

    public static void findMin(int[] array) { 
     if (array == null || array.length < 1) 
     return; 
     int count = 0; 
     int min = array[0]; 

     for (int i = 1; i <= array.length - 1; i++) { 

     if (min > array[i]) { 
      min = array[i]; 
      if(min == array[i]){ 

       count++; 
      } 
     } 
     } 
     System.out.println("The minimum is: " + min +"\n" + "The count is: " + count); 
    } 
} 
+0

あなたが新しい最小数を見つけたとき、 'count'をリセットする必要があります。 – azurefrog

+1

http://idownvotedbecau.se/nodebugging/ – lexicore

+0

[デバッガとは何ですか?問題の診断にどのように役立ちますか?](https://stackoverflow.com/q/25385173/5221149) – Andreas

答えて

3

あなたは1に、カウントを初期化し、リセットする必要が1にある:

int count = 1; // initial count should be 1 
    int min = array[0]; 

    for (int i = 1; i <= array.length - 1; i++) { 
    if (min > array[i]) { 
     // new minimum - reset count to 1 
     min = array[i]; 
     count = 1; 
    } else if (min == array[i]) { 
     // same minimum - increment count 
     count++; 
    } 
    } 
関連する問題