Array Besetzung

Liebe alle,

ich weiß leider nicht wie ich auf diese Ausgabe komme.

in einer Java-Klasse werde ein Feld wie folgt deklariert und besetzt:

int n=10;
int[] f= new int[n];
f[0]=2;
f[1]=3;
f[7]=1;
f[3]=6;
f[2]=8;
f[9]=f[3]-f[7];
int i=3;
while(i < 9)
{
f=2*i + f[i-2];
i++;

}

Wie ist das Feld nach Ablauf des Programmstückes besetzt?

Es wird ausgegeben:
0
0
0
1
0
5

mein Gedanke wäre:

i=3
f[3] = 2*3 + f[3-2]
f[3] = 6 + f[1]
f[3] = 6 +3
f[3] = 9

i=4
f[4] = 2*4 + f[4-2]
f[4] = 8 + f[2]
f[4] = 8 + 0
f[4] = 8

i=5
f[5] = 2*5 + f[5-2]
f[5] = 10 + f[3]
f[5] = 10 + 9
f[5] = 19
 

KonradN

Super-Moderator
Mitarbeiter
Es wird ausgegeben:
0
0
0
1
0
5
Wo wird das ausgegeben? In dem Code ist noch keine Ausgabe. Und das ist nicht das Feld, denn Du hast 6 Werte aber in dem Array sind 10 Werte enthalten!

i=4
f[4] = 2*4 + f[4-2]
f[4] = 8 + f[2]
f[4] = 8 + 0
f[4] = 8
Wieso ist f[2] bei dir 0? f[2] wurde im Code doch 8 zugewiesen.

Ansonsten kannst Du den Code jederzeit doch selbst ausprobieren und auch mit dem Debugger durchspielen. Ggf. noch Dinge ersetzen, so dass Berechnungen aufgeteilt werden. summand1 = 2*i; index = i-2; summand2 = f[index];
Dann hättest Du auch die Zwischenergebnisse. Wenn Du mit dem Debugger nicht klar kommst, dann bau einfach System.our.println Anweisungen ein.

Edit: Evtl. nur noch um es vorweg zu nehmen - das Array ist mit diesen Werten belegt: [2, 3, 8, 9, 16, 19, 28, 33, 44, 5] - Deine Berechnungen für Platz 3 und 5 sind somit ok. Mit dem richtigen Wert aus index 2 wird bei 4 auch die 16 kommen.
 
Vielen Dank für die Antworten. Warum gibt die Konsole (siehe Bild) diese Werte aus?

obwohl wie @KonradN das Array mit folgenden Werten besetzt ist [9, 16, 19, 28, 33, 44, 5] , auch für mich nachvollziehbar.
Ist meine Ausgabe evtl nicht korrekt?
 

Anhänge

  • Array.PNG
    Array.PNG
    77,8 KB · Aufrufe: 3
  • IMG_0679.jpg
    IMG_0679.jpg
    126,1 KB · Aufrufe: 6

KonradN

Super-Moderator
Mitarbeiter
Also wie schon erwähnt: Vor der Ausgabe hast Du den Index verändert und somit nicht mehr das berechnete Element ausgegeben.

Die Ausgabe würde ich daher auch ganz am Ende machen, wenn alles abgeschlossen ist. Und diesbezüglich kann man sich die Hilfsklasse Arrays ansehen - ein einfaches
System.out.println(Arrays.toString(f));
reicht, um ein Array auszugeben.
 

Jw456

Top Contributor
Also wie schon erwähnt: Vor der Ausgabe hast Du den Index verändert und somit nicht mehr das berechnete Element ausgegeben.

Die Ausgabe würde ich daher auch ganz am Ende machen, wenn alles abgeschlossen ist. Und diesbezüglich kann man sich die Hilfsklasse Arrays ansehen - ein einfaches
System.out.println(Arrays.toString(f));
reicht, um ein Array auszugeben.
ja das geht auch
 

Neue Themen


Oben