Anzahl der gefunden array Werte ausgeben

stylegangsta

Bekanntes Mitglied
Guten Morgen zusammen,

ich möchte gerne die Anzahl der ausgegebenen Werte in einem Array addieren und diesen Wert im Anschluss ausgeben.

In meinem Fall habe ich ein Array, wo das Alter der Mitarbeiter eingetragen ist. Und alle Mitarbeiter, die älter als 59 sind sollen hochgezählt werden. Das Filtern klappt wunderbar. Insgesamt 3 Mitarbeiter. Aber in der Ausgabe erhalte ich das Alter der 3 und nicht als Zahl einfach nur drei. Irgendwie ist der Wurm drin,

Hier der Code:
Java:
public class MergeSort { 

	public static int[] intArr = {16, 23, 14, 7, 60, 20, 6, 1, 62, 13, 12, 9, 3, 19, 70};

	public int[] sort(int l, int r) { 

		/**Teile
		 * Aufteilung der gesamten Werte in 2 Hälften bis es nicht mehr geht
		 */
		if (l < r) { 
			int q = (l + r) / 2; 

			sort(l, q); 
			sort(q + 1, r); 
			merge(l, q, r); 
		} 
		return intArr; 
	} 

	/**Herrsche
	 * Algorithmus
	 * hier werden
	 * die Werte in aufsteigender
	 * Reihenfolge sortiert
	 * und "verschmolzen"
	 */
	private void merge(int l, int q, int r) {

		int[] arr = new int[intArr.length]; 
		int i;
		int j;

		for (i = l; i <= q; i++) { 
			arr[i] = intArr[i]; 
		} 

		for (j = q + 1; j <= r; j++) { 
			arr[r + q + 1 - j] = intArr[j]; 
		} 

		i = l; 
		j = r; 

		for (int k = l; k <= r; k++) { 
			if (arr[i] <= arr[j]) { 
				intArr[k] = arr[i]; 
				i++; 
			} else { 
				intArr[k] = arr[j]; 
				j--; 
			}
		}
	}

	//Mainmethode und Ausgabe
	public static void main(String[] args) { 
		MergeSort ms = new MergeSort(); 
		int[] arr = ms.sort(0, intArr.length - 1);
		for (int i = 0; i < arr.length; i++) {
			int anzahlPotenziellerRentenAnwaerter = 0;
			if (arr[i] > 59) {
				anzahlPotenziellerRentenAnwaerter = arr[i];
				System.out.println(anzahlPotenziellerRentenAnwaerter);
			}
		}
	} 
}

Als Ausgabe erhalte ich:
60
62
64

Also gefunden werden die, aber ich möchte jetzt einfach nur, dass eine 3 ausgegeben wird. Sprich einfach nur die Anzahl der Mitarbeiter > 59.

Ich komme einfach nicht drauf, wo hier...
Java:
//Mainmethode und Ausgabe
	public static void main(String[] args) { 
		MergeSort ms = new MergeSort(); 
		int[] arr = ms.sort(0, intArr.length - 1);
		for (int i = 0; i < arr.length; i++) {
				int anzahlPotenziellerRentenAnwaerter = 0;
				if (arr[i] > 59) {
				anzahlPotenziellerRentenAnwaerter = arr[i];
				System.out.println(anzahlPotenziellerRentenAnwaerter);
...der Fehler ist. Vielleicht liegt es ja an der Uhrzeit 🙂

Vielen Dank im Voraus
 
Zuletzt bearbeitet:
setz die Variable "anzahlPotenziellerRentenanwärter" vor die for-Schleife, wenn die if-Bedingung true ist, anzahlPotenziellerRentenanwärter++; und gib die Variable nach der for-Schleife aus.
 
Moin,

du hast IMHO 2 bis 3 Probleme drin:
Java:
    public static void main( String[] args )
    {
        MergeSort ms = new MergeSort();
        int[] arr = ms.sort(0, intArr.length - 1);  // (a)
        for (int i = 0; i < arr.length; i++)
        {
            int anzahlPotenziellerRentenAnwaerter = 0;  // (b)
            if (arr[i] > 59)
            {
                anzahlPotenziellerRentenAnwaerter = arr[i];  // (c)
                System.out.println(anzahlPotenziellerRentenAnwaerter);
            }
        }
    }
zu (a): Sicher, das 'intarr' hier bekannt ist?? Ich sehe keine passende Deklaration ....
zu (b): hier setzt Du deinen Zähler in JEDEM Schleifendurchlauf wieder auf '0' - deklariere ihn VOR der Schleife (so wie CamelCase schon angedeutet hat) !
zu (c): so zählst Du nicht, sondern setzt den Zaehler auf das aktuelle Alter (den Wert im Array) !!

Besser also so:
Java:
    public static void main( String[] args )
    {
        MergeSort ms = new MergeSort();
        int[] arr = ms.sort(0, intArr.length - 1);  // Sichtbnarkeit von 'intarr' ist hier weiter ungeklärt !!

        int anzahlPotenziellerRentenAnwaerter = 0;
        for( int i = 0; i < arr.length; i++ )
        {
            if (arr[i] > 59)
            {
                anzahlPotenziellerRentenAnwaerter++;
                System.out.println( anzahlPotenziellerRentenAnwaerter );
            }
        }
    }

Gruß Klaus
 
Zuletzt bearbeitet:
@camelCase90 -> hat wunderbar geklappt. Ich bin wirklich dankbar. Die einzige Kleinigkeit, dass er es hochzählt.
Also:
1
2
3
Ich wollte eigentlich nur die 3 stehen haben

@Vfl_Freak Bis auf das summieren Problem funktioniert es genauso, wie ich es haben wollte bzw. brauche.
 

Zurück
Oben