Addition eines arrays und vieles mehr...?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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;
  }
}