Java Drei floats mit drei zugeordneten Strings: niedrigsten Wert herausfinden

Timmey92

Commodore
Registriert
Okt. 2008
Beiträge
4.568
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
 
AW: Drei float's mit drei zugeordneten String's: niedrigsten Wert herausfinden

In ein Array damit und Bubblesort.
 
bubblesort um das kleinste element zu finden ist nonsens.. ein einfacher scan durch das array ist wesentlich effizienter.
 
Hmmja gut, habe ich jetzt nicht bedacht.
Ist eh ´ne Hausaufgabe, als nächstes kommt dann sowas wie "Ordne alle Tarife auf/absteigend".
 
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
 
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:
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.
 
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:
Zurück
Oben