Java Drei floats mit drei zugeordneten Strings: niedrigsten Wert herausfinden

Timmey92

Commodore
Dabei seit
Okt. 2008
Beiträge
4.479
Moin!

Ich habe hier 3 Float value's die jeweils zu einem String gehören.
Diese Floats speichern Beträge und die Strings bezeichnen einen Tarif (damit man weis mit welchen Tarifen die Beträge errechnet wurden). Wie finde ich ejtzt den niedrigsten dieser 3 floats heraus?
Bin da ein wenig ratlos :S
Hoffe ihr könnt mir da helfen!

Gruß
BloodHunter2k8
 
H

Housechen

Gast
AW: Drei float's mit drei zugeordneten String's: niedrigsten Wert herausfinden

In ein Array damit und Bubblesort.
 

IceMatrix

Lt. Commander
Dabei seit
Jan. 2008
Beiträge
1.535
bubblesort um das kleinste element zu finden ist nonsens.. ein einfacher scan durch das array ist wesentlich effizienter.
 
H

Housechen

Gast
Hmmja gut, habe ich jetzt nicht bedacht.
Ist eh ´ne Hausaufgabe, als nächstes kommt dann sowas wie "Ordne alle Tarife auf/absteigend".
 

Timmey92

Commodore
Ersteller dieses Themas
Dabei seit
Okt. 2008
Beiträge
4.479
ne is keine hausaufgabe ...
gehört zu nem viel größeren projekt ...
ist alles fertig, bis auf dieses teil, da kommt bei mir immer nur schwachsinn ...
werds mal mit nem scan probieren
 

BerniG

Lieutenant
Dabei seit
Okt. 2004
Beiträge
620
Naja wenns nur drei sind:
Code:
float min, f1=99, f2=92, f3=453;
if(f2 < f1) min = f2;
else min = f1;
if(f3 < min) min = f3;
Bei mehr und nem Array:
Code:
float[] f = {99,92,453};
float min;
// ist hier ned zwingend weil das Array ja eh statisch ist aber wenn das in 
// ner wiederverwendbaren Funktion ist sollte die Behandlung rein!
if(f.length > 0){
   min = f[0];
   for(int i = 1; i < f.length; ++i){
      if(f[i] < min) min = f[0];
   }
} else min = Float.POSITIVE_INFINITY;   // kommt drauf an wie deine Fehlerbehandlung aussehen soll 
                                                     // wenn es ein leeres Array ist
Bei kompletter Sortierung:
Code:
float[] f = {99,92,453};
float min;
if(f.length > 0){
   Arrays.sort(f);
   min = f[0];
} else min = Float.POSITIVE_INFINITY;
Wobei mir deine Zuordnung String <-> Float nicht ganz klar ist (sind das Objekte mit einem String und einem Float?).
 
Zuletzt bearbeitet:

deus

Newbie
Dabei seit
Apr. 2004
Beiträge
1
Wenn eine Beziehung zwischen String und Float besteht kannst du sie doch in ein Object packen. Bspw.:
Code:
public class Tarif {
    private String name;
    private float betrag;
    public Tarif(String name, float betrag) {
        this.name = name;
        this.betrag = betrag;
    }
    public float getBetrag() {
        return betrag;
    }
}
Den kleinsten Wert mit zugehörigem String könntest du dann so finden:
Code:
ArrayList<Tarif> tarife = new ArrayList<Tarif>();
tarife.add(new Tarif("Tarif A", 4.99f));
tarife.add(new Tarif("Tarif B", 2.99f));
tarife.add(new Tarif("Tarif C", 3.99f));
Tarif minTarif = null;
for (Tarif tarif : tarife) {
    if (minTarif == null) {
        minTarif = tarif;
    } else {
        if (minTarif.getBetrag() > tarif.getBetrag()) {
            minTarif = tarif;
        }
    }
}
Wenn es dann später eine sortierte Liste sein soll kannst du auch einfach das Comparable-Interface implementieren und dann mit Collections.sort() sortieren.
 

Firestorm-

Lt. Commander
Dabei seit
Okt. 2006
Beiträge
2.015
Letzteres wäre auch mein Vorschlag gewesen, aber scheinbar war mein Vorredner ein paar Minuten schneller als ich.

Eine weitere Idee wäre eine Collection zu verwenden. Beispielsweise eine ArrayList für die Strings, eine weitere für die double-Werte. Wenn du entsprechend addest, kannst du per Indexierung auf die gleichen Werte zugreifen (bsp: name.get(index)).

Auch hier wieder: viele Wege führen nach Rom!

Vielleicht noch eine abgewandelte und bisschen objektorientiertere Variante meines Vorredners benutzen (sprich: Standardzugriffsmethoden für die Attribute verwenden(!)) und es passt...
 
Zuletzt bearbeitet:
Top