Du bist nicht angemeldet.

Werbeanzeige

581

05.05.2015, 18:43

Neinein, bei Java sind Arrays ja Objekte und Objekte werden immer per Referenz rumgereicht. Das Array wird nach außen schon verändert, nur etwas merkwürdig ;)

birdfreeyahoo

Alter Hase

Beiträge: 766

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

582

05.05.2015, 19:35

@Checkmateing: Volle Konzentration auf die Funktion (sind oft mehrere) und alles drum und dran, dann bin ich froh, dass ich fertig bin, starte das Spiel und sehe es passiert nichts.
Irgendwann fällt mir dann ein, dass es sinnvoll sein könnte, die Funktion auch aufzurufen.

583

05.05.2015, 19:49

@Roflo:
Die Abbruchbedingung in der inneren Schleife muss geändert werden, damit die Elemente nicht doppelt getauscht werden. So ungefähr:

Java-Quelltext

1
2
3
for(int y=0; y < t.length / 2; y++) {
    // ...
}

Habe ich jetzt einen Preis gewonnen? :D

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Endgegner« (05.05.2015, 19:55) aus folgendem Grund: Code überarbeitet (weniger quick and dirty).


MitgliedXYZ

Alter Hase

Beiträge: 1 375

Wohnort: Bayern

  • Private Nachricht senden

584

06.05.2015, 19:46

@Roflo:
Die Abbruchbedingung in der inneren Schleife muss geändert werden, damit die Elemente nicht doppelt getauscht werden. So ungefähr:

Java-Quelltext

1
2
3
for(int y=0; y < t.length / 2; y++) {
    // ...
}

Funktioniert das dann auch bei einer ungeraden Anzahl an Array-Elementen?

Tobiking

1x Rätselkönig

  • Private Nachricht senden

585

06.05.2015, 20:34


Funktioniert das dann auch bei einer ungeraden Anzahl an Array-Elementen?

Ja, weil das mittlere Element eh auf sich selbst abgebildet wird.

Architekt

Community-Fossil

Beiträge: 2 490

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

586

21.05.2015, 15:41

Quellcode

1
2
3
4
double someFunction(double AvgPriceChangeNormalized, double DayFactor, double TicksTenMinutesNormalized)
{
    return ((((AvgPriceChangeNormalized)*(0.0868))*((DayFactor)*(TicksTenMinutesNormalized)))*(((AvgPriceChangeNormalized)*(0.0868))*(((((((((TicksTenMinutesNormalized)==0)?(1):((AvgPriceChangeNormalized)/(TicksTenMinutesNormalized)))-((TicksTenMinutesNormalized)+(DayFactor)))==0)?(1):((TicksTenMinutesNormalized)/((((TicksTenMinutesNormalized)==0)?(1):((AvgPriceChangeNormalized)/(TicksTenMinutesNormalized)))-((TicksTenMinutesNormalized)+(DayFactor)))))==0)?(1):(((TicksTenMinutesNormalized)+(-0.865))/((((((TicksTenMinutesNormalized)==0)?(1):((AvgPriceChangeNormalized)/(TicksTenMinutesNormalized)))-((TicksTenMinutesNormalized)+(DayFactor)))==0)?(1):((TicksTenMinutesNormalized)/((((TicksTenMinutesNormalized)==0)?(1):((AvgPriceChangeNormalized)/(TicksTenMinutesNormalized)))-((TicksTenMinutesNormalized)+(DayFactor)))))))*(TicksTenMinutesNormalized))));
}
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Sacaldur

Community-Fossil

Beiträge: 2 326

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

587

21.05.2015, 17:13

Quellcode

1
2
3
4
double someFunction(double AvgPriceChangeNormalized, double DayFactor, double TicksTenMinutesNormalized)
{
    return ((((AvgPriceChangeNormalized)*(0.0868))*((DayFactor)*(TicksTenMinutesNormalized)))*(((AvgPriceChangeNormalized)*(0.0868))*(((((((((TicksTenMinutesNormalized)==0)?(1):((AvgPriceChangeNormalized)/(TicksTenMinutesNormalized)))-((TicksTenMinutesNormalized)+(DayFactor)))==0)?(1):((TicksTenMinutesNormalized)/((((TicksTenMinutesNormalized)==0)?(1):((AvgPriceChangeNormalized)/(TicksTenMinutesNormalized)))-((TicksTenMinutesNormalized)+(DayFactor)))))==0)?(1):(((TicksTenMinutesNormalized)+(-0.865))/((((((TicksTenMinutesNormalized)==0)?(1):((AvgPriceChangeNormalized)/(TicksTenMinutesNormalized)))-((TicksTenMinutesNormalized)+(DayFactor)))==0)?(1):((TicksTenMinutesNormalized)/((((TicksTenMinutesNormalized)==0)?(1):((AvgPriceChangeNormalized)/(TicksTenMinutesNormalized)))-((TicksTenMinutesNormalized)+(DayFactor)))))))*(TicksTenMinutesNormalized))));
}

Die gleiche Berechnung (für BAR in meinem Code) ist 4 Mal vorhanden.
Es wurde fast alles in Klammern gesetzt, sogar die mehrmals vorkommende 1 und die Parameter.
Ich verstehe anhand der Parameternamen nicht, was diese bedeuten (Würde sich das anhand des Methodennamens noch erschließen?)
Auch wenn eher Geschmackssache, würde ich beim ? : Operator (und if ... else Blöcken allgemein) erst auf den"Normalfall" prüfen und im Sonst-Fall die Ausnahme handhaben (in meinem Code entsprechend angepasst).
Zahlen, die wahrscheinlich irgendeine besondere Bedeutung haben (0,0868 und 0,865), der nicht im Ansatz ersichtlich ist.
Ich kann dein Leiden nachvollziehen. ;)

Wenn ich nicht gerade einen Fehler gemacht haben sollte, dan lässt sich der Code wunderbar vereinfachen:

Quellcode

1
2
3
4
5
6
7
8
double someFunction(double AvgPriceChangeNormalized, double DayFactor, double TicksTenMinutesNormalized)
{
    double PRICECHANGE = AvgPriceChangeNormalized * 0.0868;
    double BAR = TicksTenMinutesNormalized != 0 ? AvgPriceChangeNormalized/TicksTenMinutesNormalized - TicksTenMinutesNormalized - DayFactor : 1;
    double BAZ = BAR != 0 ? TicksTenMinutesNormalized / BAR : 1;
    double FOO = BAZ != 0 ? (TicksTenMinutesNormalized - 0.865) / BAZ : 1;
    return PRICECHANGE * DayFactor * TicksTenMinutesNormalized * PRICECHANGE * FOO * TicksTenMinutesNormalized;
}
(Zur besseren Erkennbarkeit habe ich meine Variablen groß geschrieben. Über ein paar zusätzliche Klammern, gerade bei den Bedingungen, könnte man noch reden.)
Da ich auch nach dem Umschreiben noch nicht weiß, was er macht, konnte ich keine guten Variablennamen finden und deswegen kann ich auch nicht prüfen, ob der Code noch das Gleiche macht.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

MitgliedXYZ

Alter Hase

Beiträge: 1 375

Wohnort: Bayern

  • Private Nachricht senden

588

16.06.2015, 19:10

Jep, -130%

birdfreeyahoo

Alter Hase

Beiträge: 766

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

589

16.06.2015, 20:54

Ach menno jetzt sinds nur noch 80%

Hast du versucht was passiert wenn man es kauft?

MitgliedXYZ

Alter Hase

Beiträge: 1 375

Wohnort: Bayern

  • Private Nachricht senden

590

17.06.2015, 11:24

Hab nur auf die -130% geachtet und dachte da ist einfach nur eine 1 zu viel eingetragen worden, hab aber gerade auf meinem Screenshot entdeckt, dass sogar der Preis eine negative Summe war. Auf die Idee auf "Kaufen" zu klicken, bin ich nicht gekommen...

Werbeanzeige