Suche nach dem niedrigsten Doppel-in ein Java-array
Ich versuche mich zu fangen, der niedrigste Doppel von Benutzereingaben. Ich bin nur abfangen der Wert der initialisierten min variable - was bin ich? Danke!
public static void main(String[] args) {
double[] lowNum = new double[10];
Scanner input = new Scanner(System.in);
for (int i=0; i<=9; i++) {
System.out.println("Enter a double: ");
lowNum[i] = input.nextDouble();
}
input.close();
double min = calcLowNum(lowNum);
System.out.println(min);
}
public static double calcLowNum(double[] a) {
double min=0;
for (int i=0; i>=9; i++){
for (int j=0; j>=9; j++){
if (a[i]<=a[j] && j==9){
min=a[i];
}
else {
continue;
}
}
}
return min;
- versuchen Sie, Sortieren Sie mit natürlichen Bestellung in diesem Fall die kleinste Zahl an der ersten position und der größten Zahl an letzter Stelle
- Das ist
O(n logn)
am besten, in der Erwägung, dass das minimum kann leicht gefunden werden, inO(n)
. - Sie nicht erscheinen zu müssen, um ein array an alle. Ich möchte daran erinnern, die niedrigste Zahl eingegeben, statt der Erinnerung an all die zahlen. BTW: Von der niedrigsten bis zur meinen nächsten zu minus unendlich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst ändern Sie die
i>=9
undj>=9
zui<=9
undj<=9
in:Ansonsten, deine loops sind effektiv keine-ops.
Ein weitaus robuster Ansatz ist es, zu schreiben, die Schleifen etwa so:
oder so:
Schließlich, Suche nach dem minimum kann getan werden, indem die Iteration über das array nur einmal, vergleicht jedes element mit dem aktuellen minimum (aber stellen Sie sicher, dass Sie zum initialisieren
min
angemessen!)for (int i = 0; i < 10; i++) {
.Könnte man nur verwenden, Sammlungen#min zu finden, der minimale Wert. Sie müssen
Apache Commons-Lang
für diese aber.Wenn Sie wirklich brauchen, um zu speichern Sie alle Eingaben und als minimal, der einfachste Weg, es zu tun, verwenden von library-Funktionen für die Sortierung array:
Stimme ich mit Peter Lawree braucht Man eigentlich nicht alle array -; Sie sparen müssen ersten Eingang und alle folgenden mit ihm vergleichen und zu speichern, wenn diese niedriger ist:
P. S. Eigentlich sollte Man das Doppelte.vergleichen vergleichen verdoppelt. So z.B. mit Arrays.sort() besser, wenn die Anzahl der Eingänge nicht riesig, in diesem Fall als erstes Beispiel wird viel mehr Speicher und Zeit für die Ausführung.
Update: Java8 Lösung
min = (i == 0 || lastInput < min) ? lastInput : min;
OMG, iterieren über array - das ist das Schlimmste workaround (aber mein schlechtes Englisch ist noch schlechter als er). Blick auf http://code.google.com/p/guava-libraries/ Diese lib enthält robuste code für Ihren Bedarf zu (de-facto-muss-Bibliothek in Ihrem Projekt). Sie können sehen und analysieren, Quellen - es ist kostenlos , aber Sie Erfahrungen in best-practice-Anbau als meine Englischkenntnisse.
Unten ist excample von Guave-code:
P. S: lernen, Bibliotheken mit standart code und nicht das Rad neu erfinden. Glücklich sein!