2Danke
ERLEDIGT
JA
JA
ANTWORTEN
8
8
ZUGRIFFE
1049
1049
EMPFEHLEN
-
25.02.10 07:47 #1
Hi Leute, hätte mal kurz eine Frage.
Ich habe jetzt sozusagen manuelles divide and conquer betrieben, würde jedoch gerne wissen, obs nicht möglich ist das ganze etwas formschöner zu gestalten? (und damit meine ich nicht, dass ich drei zeilen draus mache und 2 Variablen einführe)
Code java:1
int max = (goU > goD ? goU : goD) > (goR > goL ? goR : goL) ? (goU > goD ? goU : goD) : (goR > goL ? goR : goL);
hatte da vielleicht jemand eine Idee dazu?
Gruß
-
25.02.10 08:03 #2
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 905
Es gibt da verschiedene andere Möglichkeiten.
1. Du benutzt zum Vergleichen
Math.max(zahl1, zahl2);
Das gibt dir immer die höchste beider Zahlen zurück
2. Du hast ein Array an Zahlen, z.B. int[]. Dann kannst du das Array einfach sortieren lassen mit Arrays.sort(array) und dir dann den höchsten einfach herausholen.
z.B.
Code java:
3. Du hast eine Collection (z.B. eine List) da gibt es die Methode Collections.max(collection), welche dir den höchsten Wert zurück liefert. Man kann natürlich auch ein Array in eine Liste verwandeln. Dazu gibt es die Arrays.asList Methode.
Ansonsten fällt mir keine bessere Variante ein.Geändert von Anime-Otaku (25.02.10 um 08:31 Uhr)
Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
-
25.02.10 08:28 #3
Das mit dem Array und der Collection is mir schon klar, wär auch meine erste Idee gewesen, aber das erzeugt nur overhead und sonst nüsse, demnach habe ich das wieder verworfen.
das mit dem Math.max() gefällt mir ganz gut, werde das denke ich so machen
Naja, gerade übersichtlicher ist das ja nicht, aber eindeutig kürzer
Danke für die Info
-
25.02.10 08:42 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Du könntest es so versuchen:
GrußCode java:1 2 3 4 5
private static <T extends Object & Comparable<? super T>> T maxOfN(T... args) { return Collections.max(Arrays.asList(args)); } int max = maxOfN(goU, goD, goR, goL);
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
25.02.10 08:42 #5
Moin,
also ich finde die Version mit "Math.max" um Längen sinnvoller, als Deine erste Version

Du musst immer davon ausgehen, dass jemand den Code lesen (und nachvollziehen soll) der ihn nicht kennt - und da ist Dein 4-fach verkettes (X > Y ? X : Y) zunächst einfach nur Krampf, oder ?
Ich kenne ja nun den Kontext nicht, und mit 4 Werten mag das ja alles noch gehen, aber wenn es morgen mal plötzlich 6, 8 oder gar 20 Werte werden ...... von daher würde ich IMMER die von Anime-Otaku vorgeschlagenen Version (2) oder (3) bevorzugen
Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
25.02.10 08:53 #6
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 905
Ich persönlich fände hier die 2. Variante am sinnvollsten. Da bei der 3. Variante sonst die ints erst in Integer wandeln muss.
Code java:1 2 3 4
public int max(int... vInts) { Arrays.sort(vInts); return vInts[vInts.length-1]; }
Oder du iterierst schnell durch und behällst den größten Wert
Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
-
25.02.10 09:15 #7
Es handelt sich um 4 mögliche Bewegungsrichtungen, demnach wird nie mehr als 4.
Wenn es keine fix definierten variablen wären hätte ich das logischerweise auch mithilfe von Arrays gemacht, ist ja nicht so dass ich mich damit nicht auskenne. Es ging eben nur darum, von 4 Variablen die größte zu ermitteln, und da ist denke ich die Variante mit Math.max() die sinnvollste, da sie sowohl speicher als auch rechentechnisch den geringsten Aufwand verursacht.
Oder irre ich mich hierbei?
-
25.02.10 09:17 #8
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 905
Nein

P.S.: Du kannst Math.max als static import reinmachen. Dadurch musst du nur noch max schreiben
Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
-
25.02.10 09:24 #9
Ähnliche Themen
-
Maximalwert für Feld
Von klanawagna im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 13.03.10, 11:42 -
Funktion Maximalwert?
Von Joerg_Sickler im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 25.09.07, 17:42 -
Maximalwert Berechnung
Von pete_redman im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 06.03.07, 20:07 -
maximalwert in C ermitteln!!
Von LatschFOB im Forum C/C++Antworten: 10Letzter Beitrag: 16.10.03, 19:52 -
Selektiere Maximalwert...
Von Subwoover im Forum PHPAntworten: 9Letzter Beitrag: 11.05.02, 20:41





Zitieren

Login





