Wie lasse ich bei Java die Anzahl der geraden Zahlen in einem beliebig großen Array ausgeben?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Für soetwas nimm lieber eine for-Schleife. While-Schleifen können "launisch" sein: Solange die While-Bedingung erfüllt wird, laufen sie halt im Zeifel unendlich weiter, was zu Abstürzen führt, weil der Speicher vollläuft.

Mit einer for-Schleife sollte das dann so aussehen:

int [] meinArray = {1,2,3,4,5};
int istGerade = 0;

for(int i=0; i<meinArray.length; i++){
   if (meinArray[i]%2 == 0){ 
istGerade++;
} } System.out.print(istGerade);
Luki55228 
Fragesteller
 26.01.2017, 10:10

Also ich hatte es eben schonmal mit einer For Schleife. Da hat es nicht funktioniert, kann es daran liegen, dass ich for(int i=0;i<= <---- verwendet habe statt nur i

0
MoSti90  26.01.2017, 10:14
@Luki55228

Jop, daran wird's liegen. 

Als Beispiel: Dein Array besteht aus den Zahlen 1-10. Der index geht aber nicht von 1-10 sondern von 0-9. Das heißt, bei "kleiner gleich 10" (<=10) versucht er deinArray[10] abzurufen. Dieser Index existiert aber nicht und es kommt zu einem Fehler. 

1

Du zählst den Index nur hoch wenn es eine Gerade Zahl ist. Dadurch läuft die Schleife unendlich sobald ein ungerades Element kommt.
Mach das i++ aus dem if raus in die Schleife und es müsste passen.

Ich möchte an dieser Stelle erwähnen, dass ich die Verwendung von Multiplikation, Division und Modulo bei Rechnungen mit Zweierpotenzen für unangemessen halte.

In Java mag das nicht unbedingt einen großen Unterschied machen und ein schlauer Compiler wird es eh' ersetzen, aber wenn man an systemnahe Programmierung denkt, dann sind solche Operationen ein Albtraum.

Besser wäre es mit bitweisem UND zu arbeiten.