Wiederholungen

G

guest20001

Gast
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
Java:
        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
Java:
        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?
 
G

Gast2

Gast
Das Semikolon vergessen ;)
Java:
      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?
 
Zuletzt bearbeitet von einem Moderator:

Onkel Hatti

Bekanntes Mitglied
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

Gästchen20001

Gast
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?
 

Endymion

Bekanntes Mitglied
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?
 

Endymion

Bekanntes Mitglied
so ich habs endlich hinbekommen.
aber kann mir jemand erklären, warum da ein ++ und nicht ein +1 hinkommt?
 
Zuletzt bearbeitet:
B

bone2

Gast
falsch.

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

Gast2

Gast
++ 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 ;)
 
Zuletzt bearbeitet von einem Moderator:

henpara

Bekanntes Mitglied
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

Bekanntes Mitglied
ok verstanden. ich habe da aber noch ein problem: ich will eine verlaufsliste machen, und anstatt
Java:
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:
Java:
 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?
 
B

bone2

Gast
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

Bekanntes Mitglied
@threadersteller:eek:hne 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
Java:
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
Java:
 namen[zaehler] = namen[zaehler-1];
 punkte[zaehler] = punkte[zaehler-1];
is auch übersichtlicher.
 

Ähnliche Java Themen

Neue Themen


Oben