Was ist an meinem javacode falsch?
Sollte die ersten 20 2er potenzen in einem array speichern und dann ausgeben aber verstehe die musterlösung nicht.


5 Antworten
Wenn du ein Array in einer For-Schleife iterierst dann mach "int i = 0", ein Array fängt immer bei 0 an, dann kannst du dir eine Zeile später das -1 sparen was deinen Code schon etwas übersichtlicher macht.
Auch machst du, wenn alle Iterationen durch sind, am Ende noch einmal eine for-schleife für die Ausgabe. Was spricht dagegen direkt nach der Berechnung die Ausgabe zu machen? Das spart dir die zweite For-Schleife welche deinen Code im Vergleich zum Muster langsamer macht.
Die Klasse Math bzw die Funktion Math.pow welche im Muster benutzt wird ist eine Klasse der Standardbibliothek welche zwei Werte vom Typ Double als Parameter erwartet. Beschreibung: "Returns the value of the first argument raised to the power of the second argument."
[https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#pow-double-double-]
Ich hoffe das konnte dir irgendwie weiter helfen.
Tailor hat den fehler schon korrekt benannt. es geht um 2^x und nicht x ^2.
Noch ein paar Tipps:
for schleifen beginnen üblicherweise bei 0 also I= 0; I < 20; i++ dann musste das lästige i-1 beim zugriff aus array nicht machen.
Einzige außnahme ist wenn du vieleicht ne datenstruktur hast die wirklich von 1 anfängt zu zählen.
Wie auch tailor es schon sagte. Geb das array nach dem befüllen aus und nicht innerhalb der ersten for schleife.
Oder geb den berechneten wert gleich nach der berechnung aus innerhalb der for schleife ohne ne 2. schleife zu benutzen. Je nachdem wie du lust hast.
Pack die 20 in eine Variable und nutzt die fürs initialisieren des arrays und der schleife. Oder nutz die länge des arrays in der schleife. Weil wenn man eine ändert und die 2. vergisst das kracht es eventuell und man ist am fehler suchen.
Magic Numbers (Zahlen die einfach so im code stehen ohne bedeutung) sollten vermieden werden in dem man sie in variablen (ggf statisch und final) packt.
Ja genau. XD Oder wenn man nach 2 jahren seinen code anschaut und sich denkt. Wieso zur hölle hab ich das damals so gemacht und was wollte ich damit bezwecken.
Du hast nicht die 2er Potenzen ausgegeben, sondern die Quadrate der Zahlen. Math.pow macht genau das: Potenzen ausrechnen. Hierzu müssen allerdings double-Werte (wie in der Musterlösung) verwendet werden.
Davon abgesehen solltest Du den Array besser in der For-Schleife befüllen und ihn dann unter der for-Schleife (also danach) ausgeben ;-)
Oh haha stimmt hab gar nicht gemerkt dass es nichtmal 2er potenzen sind.. ging mir nur um den code 😂
sololearn ist mehr eine Spielerei. Benutze ich auch ein bisschen als "Quiz-Duell", aber mehr auch nicht. Programmieren kannst Du damit nicht lernen. Schau doch mal dort vorbei, wenn Du gute Einführen willst:
Du machst einiges anders.
- Du quadrierst. In der Musterlösung wird die Zweierpotenz ausgegeben.
- Deine Ausgabeschleife würde ich aus der Berechnungsschleife heraus ziehen.
- Du benutzt nicht die vorgefertigte Funktion Math.pow.
- Ich kenne Java nicht so gut. Wenn du Glück hast, ist "array" kein Schlüsselwort. So oder so würde ich dir raten, die Namen sprechend zu wählen, wie im Muster zum Beispiel "pow" oder "pow2" oder "2pow" (falls möglich).
Du könntest das nächste Element immer mit einem geringen Rechenaufwand berechnen, indem du das Vorelement mit 2 multiplizierst.
...
array[0] = 1;
for(i=1;i<20;i++)
array[i] = array[i-1] * 2;
...
Ich wusste nichtmal dass es eine math.pow gibt ... lerne nur mit einer app namens sololearn und yt: themorpheustutorials
Du rechnest i mal i statt 2 hoch i (wie das Beispiel vorgibt...)
Es sei denn ich hätte was völlig falsch verstanden und das ist so geplant...
Ohne "nachvollziehbare" Bedeutung meinst du, eine Bedeutung haben sie schon, nur entzieht sich die dem Uneingeweihten Betrachter..