# x+x-x+x-x...



## Anonym1 (30. Apr 2021)

Hey, ich hätte da eine Frage nämlich bin ich mir nicht sicher wie ich ein Programm schreiben soll, das abwechselnd eine Zahl addiert und eine andere subtrahiert.
Das ganze soll in einem vorgegebenen Bereich passieren, also z.b. von 0-100.
Bisher bin ich nicht sehr weit gekommen hab eine Methode geschrieben, welche allerdings nur alle zahlen miteinander addiert, brauche nur noch etwas hilfe, wie ich es so umschreiben kann, dass es nach 1x addieren 1x subtrahiert usw.

Verwende den JavaEditor zum programmieren.

    public void addiereabwechselnd (int start, int ende){
    int summe = 0;
    for (int i = 0;i<=ende;i++){
      summe += Math.pow(i, 2);
      }
 jTextField1.setText (""+summe);
    }


----------



## Gelöschtes Mitglied 65838 (30. Apr 2021)

```
if ( i % 2 == 0) addieren
else subtrahiern
```

gibt bestimmt schöneres aber so gehts auch


----------



## Anonym1 (30. Apr 2021)

Joreyk hat gesagt.:


> ```
> if ( i % 2 == 0) addieren
> else subtrahiern
> ```
> ...


hmm... bin auf jeden fall schon etwas weiter gekommen, allerdings klappt es noch nicht ganz, da am ende ein falsches ergebnis rauskommt


----------



## Gelöschtes Mitglied 65838 (30. Apr 2021)

wie weit liegst du denn vom ergebnis weg


----------



## Anonym1 (30. Apr 2021)

Joreyk hat gesagt.:


> wie weit liegst du denn vom ergebnis weg


also das ergebnis sollte bei 10 oder 12 liegen, je nachdem ob man die 0 auch in die ganze rechnung miteinbezieht, der Computer spuckt mir allerdings 110 aus.


----------



## Gelöschtes Mitglied 65838 (30. Apr 2021)

hatte das - und + vertauscht also das funktioniert
du solltest mal das ausgeben was überhaupt ausgerechnet hast

du hattest übrigens start nicht mal eingebaut


----------



## Anonym1 (30. Apr 2021)

Joreyk hat gesagt.:


> hatte das - und + vertauscht also das funktioniert
> 
> du hattest übrigens start nicht mal ein


Es funktioniert nun! 😄
Vielen lieben Dank, dass sie sich die Zeit genommen haben mir zu helfen.
Bleiben sie gesund und einen schönen Abend wünsche Ich ihnen noch!
Achso allerdings eine Frage hätte ich noch, könnten sie mir vielleicht sagen, was das i%==2 macht, würde mich interessieren, da ich es so vielleicht in zukünftigen Programmen mit einbauen kann.


----------



## Gelöschtes Mitglied 65838 (30. Apr 2021)

Anonym1 hat gesagt.:


> Es funktioniert nun! 😄
> Vielen lieben Dank, dass sie sich die Zeit genommen haben mir zu helfen.
> Bleiben sie gesund und einen schönen Abend wünsche Ich ihnen noch!
> Achso allerdings eine Frage hätte ich noch, könnten sie mir vielleicht sagen, was das i%==2 macht, würde mich interessieren, da ich es so vielleicht in zukünftigen Programmen mit einbauen kann.


Modulo ist das Prozent Zeichen ...

es gibt 5 rechenarten + - / * %


modulo rechnet solange minus bis nur noch der Rest Überbleibt
dh bei 5 % 2
wird das gerechnet
5 - 2= 3
3 - 2 = 1
1 - 2 -> würde negativ werden also ist das der Rest : 1
bei 9 % 3
9 - 3 = 6
6 - 3 = 3
3 -3 = 0
0- 3-> würde negativ werden alsoder Rest ist : 0


x%2 gibt dir aus obs ne gerade oder ungerade zahl ist..das ist so ziemlich der Klassiker 

ansich kann man viele tolle Sachen mit Modulo machen


----------



## fhoffmann (30. Apr 2021)

Man kann "%" auch anders erkären:

In der Grundschule lernt man oft: "7 geteilt durch 2 macht 3 Rest 1". Diesen "Rest" berechnet der Modulo-Operator.

Mit `n % 2` bekommt man hearaus, ob eine Zahl gerade oder ungerade ist.


----------



## Anonym1 (30. Apr 2021)

Alles klar vielen Dank


----------



## mihe7 (30. Apr 2021)

Man kann sowas natürlich mit Restoperator und if-Abfrage lösen, das geht aber auch deutlich intuitiver:

```
int vorzeichen = 1;
int summe = 0;
for (int i = 0; i <= ende; i++){
    summe += vorzeichen*Math.pow(i, 2);
    vorzeichen = -vorzeichen;
}
```


----------



## fhoffmann (30. Apr 2021)

mihe7 hat gesagt.:


> Math.pow(i, 2).


Dies kann man auch ersetzen duch `i*i`.


----------



## Gelöschtes Mitglied 65838 (1. Mai 2021)

ja


fhoffmann hat gesagt.:


> Dies kann man auch ersetzen duch `i*i`.


 nur man möchte ja so coden dass es im moment gut ist aber in zukunft noch veränderbar ist und bei i hoch 100 kannst du nicht mehr alle i's schreiben


----------



## Gelöschtes Mitglied 65838 (1. Mai 2021)

ja


fhoffmann hat gesagt.:


> Dies kann man auch ersetzen duch `i*i`.


 nur man möchte ja so coden dass es im moment gut ist aber in zukunft noch veränderbar ist und bei i hoch 100 kannst du nicht mehr alle i's schreiben


----------



## thecain (1. Mai 2021)

i*i kann man ja später auch ohne Probleme zu Math.pow(i, 100) ändern. Ist jetzt nicht wirklich ein Argument


----------



## fhoffmann (1. Mai 2021)

`Math.pow(...)` erwartet als Parameter zwei double und gibt einen double zurück.
Deshalb führt schon folgender Code zu einem Fehler (beim Kompilieren):

```
int quadrat = Math.pow(3, 2);
```
Dagegen funktioniert problemlos

```
int quadrat = 3 * 3;
```


----------



## mihe7 (1. Mai 2021)

Ja, copy & paste halt


----------

