Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
int zahlen[] = new int[]{10, 20, 30, 40, 50, 60, 70, 80};
Meine Frage ist jetzt, wie ich die Anzahl der Elemente im array bestimme die einen bestimmten Wert überschreiten wie z.B. mindestens den Wert 60. Die Antowort dazu wäre 3. Ich habe schon einige Sachen ausprobiert, aber nichts hat funktioniert. Da meine Java-Skills noch nicht so gut sind habe ich versucht das ganze so einfach wie möglich zu machen. Hier ist mein Versuch:
Java:
int anzahl = 0;
if (zahlen[0] >= 60)
anzahl = anzahl+1;
else if (zahlen[0] < 60)
anzahl = anzahl;
Mit anzahl ist hier die Anzahl der Werte des arrays die mindestens den Wert 60 haben. Hier soll überprüft werden, ob der erste Wert des arrays diese Bedingung erfüllt. Falls ja, dann wird anzahl um 1 erhöht oder dieser Wert bleibt wie er ist. Das ganze habe ich dann für jeden Wert des arrays gemacht und es funktioniert alles.
ABER
Ich bin mir ziemlich sicher, dass man das ganze um einiges einfacher machen kann, aber bei mir klappt irgendwie keiner meiner alternativen Versuchen. Ich habe es mit for-Schleifen probiert, aber es kommt immer ein Fehler. Hier ein Beispiel:
Viel einfacher wäre es, wenn du das Array absteigend sortierst oder aufsteigend sortierst und dann "von oben" darüber iterierst. Triffst du auf den Wert oder eine Zahl, die kleiner ist als dieser Wert, so nimmst du einfach die Anzahl der Werte, über die du schon iteriert bist.
Ist das Array absteigend sortiert, so ist es i + 1, ist es aufsteigend sortiert, so ist es array.length - (i + 1).
Das ist zwar laufzeittechnisch eher ungünstig aber es sieht gut aus und optimieren kann man immer noch.
Was ist der Unterschied zwischen dieser Variante und mit dem was ich versucht habe bzw. warum hat meine for-Schleife nicht geklappt? Sagt denn mein Code nicht aus, dass der nacheinander alle Werte des arrays von 0-6 überprüft, ob der mindestens der Wert 60 erreicht wird? Warum wird die Variable i nicht gefunden?
@Gucky
Also das sortieren ist ja nicht nur zeitaufwendiger, sondern auch noch komplett unpraktisch, da soweit wir wissen, das array danach ja nicht mehr verwendet wird oder zumindest die Ordnung nicht gebraucht wird.
Leserlicherlicher ist es wohl auch nicht. Da würde ich eher sowas machen:
Java:
int anzahl = 0;
for (int wert : zahlen)
if (wert >= 60)
anzahl++;
Das ist Zeile für Zeile lesbar und es wird klar, was da passiert. Das in eine Methode mit passendem Namen und du hast lineare Komplexität (Zeit und Platz) und lesbaren Code.