Addition eines arrays und vieles mehr...?
Ich habe folgende Fragen (Code beschreiben bitte)
Das Array : final int[] numbers = {-2, 4, 9, 4, -3, 4, 9, 5)
-wie kann man positive grade zahlen mit des Array addieren ?
wie sieht bsp. eine methode aus die folgendes implementiert:
-den index des ersten Auftretens von x in numbers , oder -1, wenn x nicht in number ist
-den index des letzten Auftretens von x in numbers , oder -1, wenn x nicht in number ist
-die Indizes aller x in numbers liefert oder ein leeres Array [ ] (nicht null), wenn x nicht in numbers ist.
3 Antworten
aufaddieren
IntStream.of(numbers).sum(); // alle zahlen aufaddiert
IntStream.of(numbers)
.filter(num -> num >= 0)// keine negativen zahlen
.sum();// alle zahlen aufaddiert
ersten index finden
int findFirstIndex(int x) {
var nums = IntStream.of(numbers).boxed().toList();
return nums.indexOf(x);
}
letzten index finden
int findLastIndex(int x) {
var nums = IntStream.of(numbers).boxed().toList();
return nums.lastIndexOf(x);
}
alle indexe
List<Integer> findAll(int x) {
ObjIntConsumer<List<Integer>> addOccurence = (indices, i) -> {
if (numbers[i] == x) indices.add(i);
};
return IntStream.range(0, numbers.length).collect(ArrayList::new, addOccurence, ArrayList::addAll);
}
Du iterierst durch den Array, zählst dabei den Index mit.
Für die ersten zwei brichst du ab, sobald du den gesuchten Wert gefunden hast und gibst den Index zurück.
Beim letzten verwendest du eine ArrayList oder ähnliches und wandelst diese zum Schluss in ein Array um.
Du durchläufst das Array einfach von 0 bis zum Ende:
for (int i = 0; i < LENGTH_ARRAY; i++)
Dann kannst du jede deiner Anforderungen mit einer simplen "if" Bedingung prüfen:
/* alle positiven Zahlen */
if(numbers[i] > 0)
Summieren kannst du einfach mit dem folgenden Operator:
/* Kurzschreibform für summe = summe + zahl; */
summe += zahl;
Für den Index gehst du genauso vor. Durchlaufe das Array, prüfe die Zahl auf Gleichheit mit "x" und dann speicherst du den Index ab. Den Index belegst du vor mit "-1", damit er, falls die Zahl nicht vorkommt, unverändert bleibt. Eine for-Schleife kannst du mit break beenden:
for(int i = 0; i < LENGTH_ARRAY; i++)
{
if(/* Bedingung zum Abbruch der for */)
{
break;
}
}