wie programmiere ich das,Ablauf?
ich habe eine Sequenz von zahlen die überprüft werden sollen ob sie durch 2 ohne Rest teilbar sind. Wenn sie teilbar sind gebe ich die Anzahl der geraden Zahlen aus und umgekehrt.
ich muss dafür ja eine Schleife machen die von int i < Sequenz.lenght geht und danach frage ich ab ob die Sequenz an der Stelle i durch % 2 teilbar ist, trifft das nicht zu ist es eine ungerade Zahl, wie gehe ich aber nun voran, wenn ich das ganze Feld prüfen will und erst am Ende die Anzahl der geraden und nicht geraden Zahlen ausgeben will?
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Welche Sprache?
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
java
3 Antworten
![](https://images.gutefrage.net/media/user/daCypher/1444744777_nmmslarge.jpg?v=1444744777000)
Es gibt verschiedene Varianten, je nachdem wie weit du schon im Thema Schleifen oder sogar Streams drin bist.
package de.daCypher.exercises;
import java.util.Arrays;
import java.util.Random;
public class OddEven {
public static void main(String[] args) {
final int HOW_MANY = 20;
// Array mit Zufallszahlen erzeugen (hier: 20 Zahlen im Bereich 0-100)
int[] numbers = new Random().ints(HOW_MANY, 0, 100).toArray();
System.out.println("Verwendete Zahlen: " + Arrays.toString(numbers));
// Ungerade Zahlen zählen per Schleife (mit Zählvariable)
int odd = 0;
for (int i = 0; i<numbers.length; i++ ) {
if (numbers[i] % 2 != 0) {
odd++;
}
}
// oder besser: Ungerade Zahlen zählen per for-each-Schleife
odd = 0;
for (int number: numbers) {
if (number % 2 != 0) {
odd++;
}
}
// Alternativ: Ungerade Zahlen zählen per Stream (Anzahl)
odd = (int) Arrays.stream(numbers).filter(n->n%2!=0).count();
// oder: Ungerade Zahlen zählen per Stream (Summe)
odd = Arrays.stream(numbers).map(n->n%2).sum();
// Ausgabe der gezählten Zahlen
System.out.println("Anzahl ungerade Zahlen: " + odd);
System.out.println("Anzahl gerade Zahlen: " + (HOW_MANY - odd));
}
}
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Mit einer for Schleife. Da gibt es eine besondere in Java, wenn der Datentyp Iterable (?) ist.
int count = 0;
for ( int i : feld )
{
if ( i % 2 == 0 )
count++;
}
Nun hast du die Anzahl der geraden Elemente aus dem Objekt feld in der Variablen count.
![](https://images.gutefrage.net/media/user/Spiderpig42/1523388482957_nmmslarge__104_37_406_406_4da7f0d1c5f707b4309bf110dfc99311.jpg?v=1523388483000)
Dann erstellst du 2 Variablen, in der du die Anzahl der geraden und ungeraden Zahlen speicherst.
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
wie mache ich das bzw. wie wird das dann anschrieben ? Weil ich prüfe jede stelle im Feld ob sie durch modulu zwei teilbar ist