1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Vergleichen von Variablen?

  • api88
  • 26. September 2006 um 17:10
  • Unerledigt
  • api88
    2
    api88
    Mitglied
    Punkte
    20
    Beiträge
    3
    • 26. September 2006 um 17:10
    • #1

    Hi ich bin gerade dabei ein Programm zu schreiben in dem ich 4 Variablen(int z1, int z2, int z3 und int z4)miteinander vergleichen muss.

    Mein Ziel ist es, die jeweils kleinste Variable, oder eine der kleinsten Variablen, rauszufinden.
    Falls 2 Variablen gleich-klein sind soll einfach die erste angezeigt werden ( d.h. wenn z.B. z1 = z2 ist dann soll in dem Fall z1 angezeigt werden).

    Ich habe das schon mit if-bedingungen probiert komme dann aber im endeffekt auf viele viele if-bedingungen. Kann mir da einer sagen wich ich das machen kann?

  • KeinWunder
    7
    KeinWunder
    Mitglied
    Punkte
    490
    Beiträge
    90
    • 26. September 2006 um 17:19
    • #2

    du kannst die Variablen in ein int array packen und dann mit java.util.Collections(array).min() das kleinste element daraus holen

    Four stages of acceptance:
    1.) this is worthless nonsense
    2.) this is interesting, but perverse, point of view
    3.) this is true, but quite unimportant
    4.) I alwas said so
    J.B.S. Haldane

  • api88
    2
    api88
    Mitglied
    Punkte
    20
    Beiträge
    3
    • 26. September 2006 um 17:28
    • #3

    funktioniert das dann auch wenn 2 oder 3 variablen gleich sind ?

  • Paulchen
    1
    Paulchen
    Gast
    • 26. September 2006 um 17:32
    • #4
    Zitat von api88

    funktioniert das dann auch wenn 2 oder 3 variablen gleich sind ?

    Ja. Außerdem ist es ja bei mehreren Variablen mit gleichem Wert egal, welche Variable du auswählst. Es geht dir ja nur um den Wert, oder?

  • Jensi
    28
    Jensi
    Mitglied
    Reaktionen
    141
    Punkte
    8.486
    Beiträge
    1.649
    • 26. September 2006 um 18:09
    • #5

    Soviele if-Abfragen braucht man gar nicht:

    Code
    public class test {
            public static void main(String argv[]) {
                    int z1 = 76;
                    int z2 = 2;
                    int z3 = -5;
                    int z4 = 18;
    
    
                    int min = z1;
                    int min_var = 1;
    
    
                    if (z1 < min) { min = z1; min_var = 1; }
                    if (z2 < min) { min = z2; min_var = 2; }
                    if (z3 < min) { min = z3; min_var = 3; }
                    if (z4 < min) { min = z4; min_var = 4; }
    
    
                    System.out.println("z"+min_var+"="+min);
            }
    }
    Alles anzeigen
  • Lacce
    3
    Lacce
    Mitglied
    Punkte
    50
    Beiträge
    10
    • 26. September 2006 um 18:24
    • #6

    Wenn man ein ultraperformantes Programm möchte, kann man sogar das erste if-Statement einsparen. :)

    -Thomas

  • api88
    2
    api88
    Mitglied
    Punkte
    20
    Beiträge
    3
    • 26. September 2006 um 18:49
    • #7

    eigentlich soll dann jeweils ein befehl ausgeführt werden. ich kann euch ja mal meinen quelltext mit den if bedingungen zeigen.

    Code
    if(z1==0 && z2==0 && z3==0 && z4==0){s1.enqueue(new Kunde());}
          if(z1<z2 && z1<z3 && z1<z4){s1.enqueue(new Kunde());}
          if(z2<z1 && z1<z3 && z1<z4){s2.enqueue(new Kunde());}
          if(z3<z1 && z1<z2 && z1<z4){s3.enqueue(new Kunde());}
          if(z4<z1 && z1<z2 && z1<z3){s4.enqueue(new Kunde());}
          if(z1==z2 && z1<z3 && z1<z4 || z1==z3 && z1<z2 && z1<z4 || z1==z4 && z1<z2 && z1<z3){s1.enqueue(new Kunde());}
          if(z2==z3 && z2<z1 && z2<z4 || z2==z4 && z2<z1 && z2<z3){s2.enqueue(new Kunde());}
          if(z3==z4 && z3<z1 && z3<z2){s3.enqueue(new Kunde());}
  • Shine
    7
    Shine
    Mitglied
    Punkte
    465
    Beiträge
    89
    • 26. September 2006 um 19:20
    • #8

    also wenn ich deine aufgabe richtig verstanden habe, dann soll entsprechend welche zahl die kleinste ist sx.enqueue(new Kunde()) aufgerufen werden.
    naja dann suchst dir am besten zerst die kleinste und da im obigen quellcode eh auch der index der zahl mitgespeichert wird sagst dann
    if (index == 1) {s1.enqueue(...
    if (index == 2)...

    usw.

    das hat sicher weniger vergleiche.

    [edit]
    btw. die 3 unteren ifs sind wirklich unnötig, denn die kannst du in die oberen einbauen, indem du geschickt vergleiche auf kleiner gleich einbaust[/edit]
    [edit2]
    du könntest auch statt dem speichern des index einfach einer Variable des selben Typs wie diese sx - Objekte s1, s2, s3 oder s4 im Block des if-Statements zuordnen, das wäre sowieso das objektorientierteste :winking_face:
    [/edit2]
    is das sowas wie, wenn man Kunden an mitarbeitern mit einer Queue zuteilt, schaut irgenwie so aus?

    mfg shine

  • Jensi
    28
    Jensi
    Mitglied
    Reaktionen
    141
    Punkte
    8.486
    Beiträge
    1.649
    • 26. September 2006 um 19:32
    • #9

    Da fragt man sich echt, warum Du nicht mit einem Array arbeitest, sondern mit genau vier (wieso gerade vier? Die Zero-One-Inifnity-Regel drängt sich auf) Variablen?

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung