# Array: Anzahl Elemente mit best. Wert zählen



## System.exit(0) (3. Mrz 2009)

Hallo,

um mich intensiv mit Java auseinander zu setzen, arbeite ich gerade an einem Sudoku-Löser.

Um mir die Arbeit etwas zu erleichtern, wollte ich folgendes wissen:

Gibt es eine fertige Klasse, die folgende Aufgabe bewältigen kann:

Aus einem mehrdimensionalen Array zählen, wie viele Elemente mit einem bestimmten , von mir festgelegten, Wert in diesem Array bzw. in einer Dimension dieses Arrays, vorhanden sind.

Bsp: myArr _[j] --> int Anzahl = Die Anzahl der Elemente, die den Wert x haben.

Gibt es so etwas, oder muss man das selber programmieren?

mfg 

System.exit(0)_


----------



## tfa (3. Mrz 2009)

Selber machen. Sollte dich nicht mehr Zeit kosten, als diese Frage zu schreiben.


----------



## Ebenius (3. Mrz 2009)

Ich kenne nix fertiges. Ist ja aber nicht viel dabei. Für zweidimensionale int-Arrays:[HIGHLIGHT="Java"]static int count(int[][] arr, int findMe) {
  int count = 0;
  for (int[] childArray : arr) {
    for (int element : childArray) {
      if (element == findMe) {
        count++;
      }
    }
  }

  return count;
}[/HIGHLIGHT]
Und allgemein für n-dimensionale int-Arrays (ungetestet): [HIGHLIGHT="Java"]static int countRecursive(Object arr, int findMe) {
  int count = 0;
  final Class<?> clazz = arr.getClass();
  if (clazz.isArray()) {
    final Class<?> componentType = clazz.getComponentType();
    if (componentType == int.class) {
      for (int element : (int[]) arr) {
        if (element == findMe) {
          count++;
        }
      }
    } else if (componentType.isArray()) {
      int length = Array.getLength(arr);
      for (int i = 0; i < length; i++) {
        count += countRecursive(Array.get(arr, i), findMe);
      }
    } else {
      throw new IllegalArgumentException(
            "argument must be an n-dimensional int array");
    }
  } else {
    throw new IllegalArgumentException(
          "argument must be an n-dimensional int array");
  }

  return count;
}[/HIGHLIGHT]
Ebenius


----------



## System.exit(0) (3. Mrz 2009)

Danke für die Antwort.en 

Es hätte ja sein können, dass es so etwas schon gibt. 

Dabei ging es mir einfach darum, evtl. nützliche Klassen zu finden, die man später auch immer mal wieder gebrauchen kann.

mfg

System.exit(0)


----------



## Ebenius (3. Mrz 2009)

System.exit(0) hat gesagt.:


> Dabei ging es mir einfach darum, evtl. nützliche Klassen zu finden, die man später auch immer mal wieder gebrauchen kann.


Genau so ist's ja auch richtig. 

Ebenius


----------

