Hallo Community!
Ich habe hier ein dickes Problem und hänge schon den ganzen Tag dran. Ich brauche hilfe bei folgendem Quelltext:
Java:
publicclassProgrammStart{publicstaticvoidmain(String[] args){//[] ist ein Arrayint faecher =10;int[] intArray =newint[faecher];int i;for(i =0; i<faecher ; i=i+1){if(i==0){
intArray[i]=i+1;}else{
intArray[i]=intArray[i-1]*2;}}for(i=0;i<faecher;i++){System.out.println (intArray[i]);}}}
es wäre so super, wenn mir das mal einer Schritt für Schritt aufdröseln könnte. Ich check es einfach nicht und habe mittlerweile echt nicht mehr den Durchblick. Ich weiß, dass ich kurz vor der Lösung des Quelltextes stehe, ihn zu verstehen, aber im Moment klappt es einfach nicht mehr. Ich habe schon etliche Seiten besucht und nachgelesen aber in meinem Denken kommt die Potenz von "i"(Mehr macht das Prog nicht) schon vor dem letzten
Die letzte Schleife gibt dir einfach nur die vorher berechneten Ergebnisse auf der Konsole aus.
Die Potenz wurde, wie du schon gesagt hast, vorher berechnet.
Danke für die Antworten. Es war spät, ich hab mich schlecht ausgedrückt. Mein Problem ist das i++ bei der letzten Schleife.
Bei mir würde mit der letzten Schleife 2,3,5,9,17 usw rauskommen. Wo denke ich falsch?
Die Erklärung von dir, ARadauer wäre ja noch fataler für mich weil ja dann das erste if nie zur geltung kommt.
Also machen all die i++ nicht Array[0] zu Array[1] sondern erstellen nur einen neuen Array?
Wenn das so ist, dann wird ja das Ergebnis von oben nicht übernommen oder? Ich steh sooo derbe auf dem Schlau bei der Sache das glaubt mir kein Mensch!;(
Bei intArray[i-1]*2; dienen die eckigen Klammern dem Zugriff auf das "vorherige" Array-Feld, das (i-1) spielt für die arithmethische Berechnung keine Rolle, da kommt nur das *2 zum Tragen. Vielleicht siehst du es besser, wenn man die Zeile in zwei Schritte zerlegt:
Irgendwie wirfst du Indizes und Inhalte des Arrays wild durcheinander. Ein Array ist eine Reihe Schubladen mit Nummer (von 0 bis irgendwas) drauf und irgendetwas drin:
Code:
array[0] --> 42
array[1] --> 4711
array[2] --> 23
Eine Operation wie array[1]++ macht nun mit dem Index 1 überhaupt nichts. Stattdessen schaut man nach, was in diesem Schubfach liegt (hier 4711) und führt die Operation darauf aus. Danach liegt unter array[1] eben 4712 drin. Analog die Operation array[1] = array[0] + array[2]. Dann wird die Summe der Inhalte von Schublade null und zwei zum neuen Inhalt der Schublade 1, also ist danach array[1] == 65. So einfach ist das.
Ich Danke euch! Die letze Erklärung war das KLICK was ich benötigt habe. natürlich habe ich den Index mit dem Wert des Arrays durcheinander gewürfelt!:lol: