Vergleichen von Variablen?

  • 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?

  • 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

  • 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?

  • Soviele if-Abfragen braucht man gar nicht:

  • 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());}
  • 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 ;)
    [/edit2]
    is das sowas wie, wenn man Kunden an mitarbeitern mit einer Queue zuteilt, schaut irgenwie so aus?

    mfg shine

Jetzt mitmachen!

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