For-Schleife und Ungerade/Gerade Zahlen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Einfach von 1 bis 6 zählen und wenn gerade, dann ein Minus davor ausgeben.

for (int i = 1; i < 7; i++) {
  if (i%2 == 0) System.out.println(-i);
  else System.out.println(i);
}

Mithilfe von Ternary Operator oder Mathematik geht's noch kürzer:

// Using ternary:
for (int i = 1; i < 7; i++) {
  System.out.println(i%2 == 0 ? -i : i);
}
// Using math:
for (int i = 1; i < 7; i++) {
  System.out.println(i * (i%2*2-1));
}
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

Tim3674 
Fragesteller
 21.09.2022, 23:12

Vielen Lieben dank, hast mir sehr weitergeholfen

0
TestNutzung  22.09.2022, 16:42
@Tim3674

Der einzige Fehler, den du hattest, war, dass du den Wert zahl zugewiesen hast. Du willst bei der Ausgabe ja nicht zahl verändern, sondern nur 0 - zahl ausgeben. Das hätte perfekt funktioniert, dass man auch einfach nur -zahl statt 0 - zahl in Java schreiben kann, ist ein Sonderfeature, das konntest du nicht wissen. Der Ternary-operator ist eigentlich wie if-else, nur dass er ein Ergebnis hat und nicht nur etwas tut:

boolean wennDasGilt = false;
int dannDieserWert = 3;
int sonstDieserWert = 5;

int einWert = wennDasGilt ? dannDieserWert : sonstDieserWert;
System.out.println(einWert); // 5
1
PWolff  21.09.2022, 23:27

Zwar kann es sein, dass der Compiler i%2*2-1 inzwischen selbständig optimieren kann (ist sogar wahrscheinlich), aber ich bin gewöhnt, bei so was Terme wie ((i&2)<<1)-1 zu verwenden - Gewohnheit aus alter Zeit.

0

Das Einzige, was hier nicht richtig aussieht, ist - soweit ich sehe - die Abbruchbedingung der Schleife. Die ist nämlich immer erfüllt.

Setz statt -7 ein paar positive Zahlen ein und schau, was passiert.

(Natürlich kann man das Problem kürzer und "eleganter" lösen, aber darum kann man sich kümmern, wenn du die Grundlagen beherrschst.)


Tim3674 
Fragesteller
 21.09.2022, 23:18

Danke

0
Von Experte MrAmazing2 bestätigt
Kann mir jemand weiterhelfen?

Mach es doch einfacher: Im Schleifenkopf lässt du von 1 bis (inklusive) +6 zählen ... Also 6 Mal ...

Im Körper gibst du dann den positiven oder negativen Wert aus, abhängig davon, ob es eine gerade oder ungerade Zahl ist

Woher ich das weiß:Studium / Ausbildung – Abgeschlossenes Studium der Informatik (B.Sc.)

Tim3674 
Fragesteller
 21.09.2022, 23:13

Hast mir auch sehr weitergeholfen danke ^^

0