Wie generiert man in Java folgende Zahlenfolge?
-1, 2, -3, 4, -5 , 6, ...
5 Antworten
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
for(int i=1; i<=100; i+=2) {
System.out.println(-i);
System.out.println(i+1);
}
![](https://images.gutefrage.net/media/user/Functional/1676159504902_nmmslarge__0_0_960_960_e2ac34e1b18f19102f515d8e9bd9a8ba.jpg?v=1676159505000)
Mit einer Schleife. Man beginne mit -1, und gebe immer die Zahl aus. Wenn die Zahl gerade ist (= durch 2 teilbar), gibt man nicht die Zahl selbst aus, sondern den Betrag (in Java z.B. mittels Math.abs()).
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
![](https://images.gutefrage.net/media/user/ranger1111/1664398651580_nmmslarge__0_0_300_300_9a4334409e63f908baa4b0bff88a688f.jpg?v=1664398652000)
Ich würde denken gerade deswegen nicht. Du meinst vermutlich für hohe i oder? Naja, ich weiß nicht inwieweit der Compiler das optimiert. Ich denke er tut es.
Ich würde sagen, diese hier ist die Informatiker-Lösung und meine ist die Mathematiker-Lösung.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
for(int i=1;i<n;i++)
System.out.print((i%2 == 0 ? i : -i)+", ");
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
for(int i=1;i<n;i++)
System.out.print((i%2 == 0 ? i : -i)+", ");
/*Ich haben hier den bedingten Ausdruck verwendet mit modolu. Wenn jedesmal der i wert modolu 2 gleich 0 ergibt, dann gebe den Wert i aus, sonst den wert -i.
Das in eine Klammer und dann einen Kommentar noch hinzufügen, um die Zahlen von einander zu trennen.*/
![](https://images.gutefrage.net/media/user/ranger1111/1664398651580_nmmslarge__0_0_300_300_9a4334409e63f908baa4b0bff88a688f.jpg?v=1664398652000)
For schleife. i inkrementieren und (-1)^i drauf multiplizieren
![](https://images.gutefrage.net/media/user/dieLuka/1449085745249_nmmslarge__510_98_2403_2403_f1be6c3c6cfdc433f64317d659791655.jpg?v=1449085745000)
Ein Problem. (0+1)*-1 =-1 ok (-1+1)*-1 =....
Wenn du i erhöhst und i fest *-1 rechnest hast du ein Problem mit den negativen Zahlen denn -5+1 ist -4 du brauchtest aber -6 (also -5-1) um damit mit *-1 eine 6 zu machen. Für 6 brauchst du dann wieder +1 um daraus mit *-1 die -7 zu machen.
Wenn du *-1 nur für die Ausgabe nutzt musst du auf grade/ungrade prüfen. Wenn du damit i anpasst musst du abwechselnd +1 oder -1 rechnen.
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/ranger1111/1664398651580_nmmslarge__0_0_300_300_9a4334409e63f908baa4b0bff88a688f.jpg?v=1664398652000)
Ich wende eine alternierende Folge an, so wie man es mathematisch machen würde.
a_i=i × (-1)^i
und lasse i von 1 an laufen. Alles passt. Ich nehme ja nicht Mal -1 sondern Mal -1 hoch i.
![](https://images.gutefrage.net/media/user/dieLuka/1449085745249_nmmslarge__510_98_2403_2403_f1be6c3c6cfdc433f64317d659791655.jpg?v=1449085745000)
![](https://images.gutefrage.net/media/user/ranger1111/1664398651580_nmmslarge__0_0_300_300_9a4334409e63f908baa4b0bff88a688f.jpg?v=1664398652000)
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
zwei Schleifen
eine macht +1, die andere +1 *(-1)
![](https://images.gutefrage.net/media/user/ranger1111/1664398651580_nmmslarge__0_0_300_300_9a4334409e63f908baa4b0bff88a688f.jpg?v=1664398652000)
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/ranger1111/1664398651580_nmmslarge__0_0_300_300_9a4334409e63f908baa4b0bff88a688f.jpg?v=1664398652000)
Der Fragesteller soll oder will hoffentlich was lernen, da ist es sinnvoll, zu korrigieren.
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/ranger1111/1664398651580_nmmslarge__0_0_300_300_9a4334409e63f908baa4b0bff88a688f.jpg?v=1664398652000)
Und es gibt noch eine Kommentarfunktion, aus gutem Grund.
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
Ja, das geht auch, aber da braucht man ein If extra.