# Wiederholungen



## guest20001 (16. Nov 2010)

hallo, ich habe mit ein tutorial zum programmieren mit java runtergeladen. das problem ist, dass die lösung nicht dabei ist. ich habe heute erst damit angefangen, und habe schon mein erstes größeres problem. ich verstehe dabei nicht genau, wie die wiederholungen mit fester anzahl funktionieren. 
ich will 

```
punkte = new int[10];
        punkte[0] = 0;
        punkte[1] = 0;
        punkte[2] = 0;
        punkte[3] = 0;
        punkte[4] = 0;
        punkte[5] = 0;
        punkte[6] = 0;
        punkte[7] = 0;
        punkte[8] = 0;
        punkte[9] = 0;
```
durch

```
punkte = new String[10];
        for (int zaehler = 0; zaehler <= 9; zaehler+1)
        {
            punkte[zaehler] = 0
        }
```
ersetzen.
aber ich bekomme nur die fehlermeldung "this is not a statement". was mache ich falsch?


----------



## Gast2 (16. Nov 2010)

Das Semikolon vergessen 

```
punkte = new String[10];
        for (int zaehler = 0; zaehler <= 9; zaehler+1)
        {
            punkte[zaehler] = "0"; // 0 geht nur wenn punkte int[] bleiben...
        }
```

Und sind Punkte jetzt Strings oder ints?


----------



## Onkel Hatti (16. Nov 2010)

Die Schleife ist grundsätzlich in Ordnung, aber du deklarierst die Variable Punkte als Array von Strings (10 Stück). In der Schleife weist du einem String einen Integer Wert zu. Das funktioniert nicht. Deklariere die Variable punkte als Array von int.

Hatti


----------



## Gästchen20001 (16. Nov 2010)

oh ja, das war ein tippfehler, es sind int
aber das problem hab ich jetzt trotzdem noch

ne frage nebenbei: muss man als gast hier in dem forum bei jedem post seinen namen ändern?


----------



## Gast2 (16. Nov 2010)

```
int[] punkte = new int[10];
        for (int zaehler = 0; zaehler <= 9; zaehler++)
        {
            punkte[zaehler] = 0;
        }
```

Eben übersehen... nicht zaehler+1 sondern zaehler++

Es muss immer ein Inkrement oder Dekrement Ausdruck sein:
The for Statement (The Java™ Tutorials > Learning the Java Language > Language Basics)

Zum anderen:
Meld dich einfach an


----------



## Endymion (17. Nov 2010)

sooo, account erstellt^^
also ich hab das +1 jetzt zum ++ umgeändert. die fehlermeldung is weg, aber wenn ich jetzt ein objekt erstellen will, komm nur n kleines fenster wo drinnen steht:
java.lang.NullPointerException
	at VERLAUFSLISTE.<init>(VERLAUFSLISTE.java:12)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at bluej.runtime.ExecServer$3.run(ExecServer.java:790)
java.lang.NullPointerException
	at VERLAUFSLISTE.<init>(VERLAUFSLISTE.java:12)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at bluej.runtime.ExecServer$3.run(ExecServer.java:790)
java.lang.NullPointerException
	at VERLAUFSLISTE.<init>(VERLAUFSLISTE.java:12)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at bluej.runtime.ExecServer$3.run(ExecServer.java:790)
java.lang.NullPointerException
	at VERLAUFSLISTE.<init>(VERLAUFSLISTE.java:12)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at bluej.runtime.ExecServer$3.run(ExecServer.java:790)
java.lang.NullPointerException
	at VERLAUFSLISTE.<init>(VERLAUFSLISTE.java:12)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at bluej.runtime.ExecServer$3.run(ExecServer.java:790)

was hab ich jetzt schon wieder falsch gemacht?


----------



## XHelp (17. Nov 2010)

Zeig doch die relevante Codestelle dazu... da ist wohl irgendwas null, was nicht null sein darf.


----------



## Andi_CH (17. Nov 2010)

Das steht sogar genau wo das ist - vielleicht postest du den Code der Verlaufsliste - auf Zeile 12 ist ein Problem



Endymion hat gesagt.:


> at VERLAUFSLISTE.<init>(VERLAUFSLISTE.java:12)


----------



## Endymion (17. Nov 2010)

so ich habs endlich hinbekommen.
aber kann mir jemand erklären, warum da ein ++ und nicht ein +1 hinkommt?


----------



## henpara (17. Nov 2010)

++ und +1 machen das gleiche.

btw. wenn thema erledigt, auch das flag auf erledigt setzen, dann wissen alle bescheid.
mfg


----------



## bone2 (17. Nov 2010)

falsch.

'zahl++' ist das gleiche wie 'zahl = zahl + 1'
zahl + 1 alleine macht nichts, es findet keine zuweisung statt


----------



## henpara (17. Nov 2010)

@bone2: soviel grips und grundwissen hatte ich jetzt eig. vorausgesetzt :/


----------



## Gast2 (17. Nov 2010)

henpara hat gesagt.:


> ++ und +1 machen das gleiche.



Nicht ganz richtig - aber pinzipiell hat das den gleichen Effekt.

Edit:// Meine Posting war Blödsinn und nicht richtig... [c]for(int i = 0; i < 20; i = i +2)[/c] oder [c]for(int i = 0; i < 20; i += 2)[/c] geht natürlich auch... vergesst meine frühmorgentlichen Blödsinn


----------



## henpara (17. Nov 2010)

jo, wenn ich mir halt NUR die Frage des erstellers anschaue habt ihr recht, da hab ich net genau drauf geantwortet. 
und bone2 hat dann ja auch eig. alles korrigiert.

btw. könnte man statt zahl++ auch zahl+=1 machen.


----------



## Endymion (17. Nov 2010)

ok verstanden. ich habe da aber noch ein problem: ich will eine verlaufsliste machen, und anstatt

```
void NeuesErgebnisEintragen (String nameNeu, int punkteNeu
namen9=namen8;
namen8=namen7;
namen7=namen6;
namen6=namen5;
namen5=namen4;
namen4=namen3;
namen3=namen2;
namen2=namen1;
namen1=nameNeu;
punkte9=punkte8;
punkte8=punkte7;
punkte7=punkte6;
punkte6=punkte5;
punkte5=punkte4;
punkte4=punkte3;
punkte3=punkte2;
punkte2=punkte1;
punkte1=punkteNeu;
```
folgendes machen:

```
void NeuesErgebnisEintragen (String nameNeu, int punkteNeu)
    {
        for (int zaehler = 9; zaehler <= 0; zaehler = zaehler-)
        {
            namen[zaehler] = namen[zaehler-1];
        }
        namen[0] = nameNeu;
        for (int zaehler = 1; zaehler <= 9; zaehler = zaehler-1)
        {
            punkte[9] = punkte[8];
        }
        punkte[0] = punkteNeu;
    }
```
wenn ich dann aber ein ergebnis manuell eintrage, wird das letzte ergebnis an der stelle 0 immer durch das neuere ersetzt, aberdas letzte ergebnis rutscht nicht auf die stelle 1. was mach ich falsch?


----------



## bone2 (17. Nov 2010)

naja du fängst mit 9 an udn testest ob es kleiner 0 ist. ist es nicht, schleife bricht ab. und es fehlt eine 1 im ersten for hinterm -


----------



## henpara (17. Nov 2010)

@threaderstellerhne hier jemandem zu nahe treten zu wollen, aber mit logik hast du es nicht so?

tipp: lies dir einfach mal GANZ genau durch wie ein for-schleife aufgebaut ist, verstehe es, und wende es an.
link
da siehst du auch, daß die <= - bedingung bei aufsteigendem zähler verwendet wird... absteigende zähler verwenden dann logischerweise eine ...-bedingung.
zudem wurde dir ein paar zeilen drüber gesagt, daß man am einfachsten in einer for-schleife mit zaehler++ bzw. zaehler-- arbeitet, spart arbeit, leistet das gewünschte.

zudem steht im 2. teil von deinem code noch mehr mist:
aka 
	
	
	
	





```
punkte[9] = punkte[8];
```
was soll eine ausführung in einer for-schleife? diese ausführung macht immer das gleiche, für jedes i. bringt dir also garnichts, hättest die schleife drum rum auch weglassen können.

wenn du, was ich denke, namen und punkte "hochschreiben" möchtest, dann mach doch 

```
namen[zaehler] = namen[zaehler-1];
 punkte[zaehler] = punkte[zaehler-1];
```
is auch übersichtlicher.


----------



## Endymion (17. Nov 2010)

ui, danke, es funktioniert


----------

