Was ist an meinem javacode falsch?

Musterlösung - (PC, programmieren, Java) Meine Lösung - (PC, programmieren, Java)

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.


MonkeyKing  21.11.2017, 17:25
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.

Ohne "nachvollziehbare" Bedeutung meinst du, eine Bedeutung haben sie schon, nur entzieht sich die dem Uneingeweihten Betrachter..

1
FouLou  21.11.2017, 17:27
@MonkeyKing

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.

1

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 ;-)


SaraMagZara 
Fragesteller
 21.11.2017, 17:08

Oh haha stimmt hab gar nicht gemerkt dass es nichtmal 2er potenzen sind.. ging mir nur um den code 😂

1
User16495  21.11.2017, 21:26
@SaraMagZara

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:

https://www.codecademy.com/

0

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;
...
Woher ich das weiß:Berufserfahrung – Programmierer

SaraMagZara 
Fragesteller
 21.11.2017, 17:14

Ich wusste nichtmal dass es eine math.pow gibt ... lerne nur mit einer app namens sololearn und yt: themorpheustutorials

0

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...