2017-10-16 2 views
-2

Dies ist ein Programm, um einfach den minimalen Wert und die Anzahl der Zeit, die es im Array auftritt. Wenn das Array mit {13, 28, 5, 11} gefüllt ist, gibt es die Min als 5 und die Zählung als 1 zurück. Wenn das Array jedoch mit den gegebenen Zahlen gefüllt ist, gibt es die Zählung als 2 zurück, wenn es 1 sein sollte Wie würde ich das beheben? ThankyouZählen Sie die Anzahl der Vorkommen eines 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

Sie müssen 'count' zurückgesetzt werden, wenn Sie eine neue Mindestanzahl finden. – azurefrog

+1

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

+0

[Was ist ein Debugger und wie kann es mir helfen, Probleme zu diagnostizieren?] (Https://stackoverflow.com/q/25385173/5221149) – Andreas

Antwort

3

Sie sollten die Zählung auf 1 initialisiert und auf 1 zurückgesetzt, wenn der aktuelle Minimalwert geändert wird:

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++; 
    } 
    } 
Verwandte Themen