Runde 2 -- und ich ver2fel auch

  • Schönen Nachmittag zusammen!

    Angabe: Entwerfe ein Programm, welches 3 verschiedene Zahlen einliest, und von diesen 3 Zahlen den Median ausgibt.

    Ich will diese Aufgabe ohne arrays lösen, weil wir das bis jez noch nicht gemacht haben.

    Habs seit gestern auf viele verschiedene Arten probiert, aba ich kriegs einfach nicht auf die Reihe :(

    Am einfachsten in meinen Augen wäre

    Code
    if ((a < b < c) ^ (c < b < a))  {System.out.println("Median = " +b);}
          else if ((b < a < c) ^ (c < a < b)) {System.out.println("Median = " +a);}
          else if ((a < c < b) ^ (b < c < a)) {System.out.println("Median = " +c);}

    so etwas in die Richtung, aba so funktionierts mal jedenfalls nicht.

    Alle anderen Methoden die ich ausprobiert hab, sind ungleich länger, und es haut einfach nicht so hin, wie es gefragt ist.

    Entweder es gibt mir dann alle 3 Zahlen als Median aus oda sonstige Fehler.

    Bitte um Hilfe, muss das Programm bis 18:00 abgeben :rolleyes:

  • ^ ist bitweises EXOR.
    || ist logisches OR.

    Java Operators

    Verständlicher und auch wieder verwendbar wäre es wenn du die Zahlen in einen Collection packst, diese sortierst und dann das mittlere Element ausgibst.
    Dann könntst du auch bei einer geraden Anzahl von Zahlen den Median berechnen und bist ausserdem nicht von den Anzahl der Eingaben abhängig.

  • die abfrage (a < b < c) liefert in java keinen gueltigen wert (der aber von der if-Abfrage verlangt wird): Du musst diese Abfrage "aufteilen": also in:
    (a < b) && (b < c)
    dieser Ausdruck entspricht der Semantik, wie du es haben wolltest.

  • die abfrage (a < b < c) liefert in java keinen gueltigen wert (der aber von der if-Abfrage verlangt wird): Du musst diese Abfrage "aufteilen": also in:
    (a < b) && (b < c)
    dieser Ausdruck entspricht der Semantik, wie du es haben wolltest.

    Wusste ich auch nicht :D.

    Also so geht:

    Code
    int a=1;
        int b=2;
        int c=3;
    
            if (((a<b) && (b<c)) || ((c<b) && (b<a))) {
                System.out.println("Median: " + b);    
            }
  • Danke für eure Antworten, probier mal schnell aus, und poste dann falls es gefutzt hat, oder nicht..

    lg, Bertl

  • Nochmals DANKE für eure Hilfe, mit dem Aufspalten hat es auf Anhieb funktioniert!!!

    Kann jetzt endlich abgeben! War ja mit meinem Ansatz im Prinzip schon fertig (vom Denken her), nur dachte ich, dass es auch (a < b < c) funktioniert, wär ja einfacher!

    Schönes Wochenende euch allen, mfg, Bertl :wave:

  • Mich wundert eigentlich, dass die (a < b < c) Ausdrücke keinen Syntax-Error oder zumindest ein Warning generiert haben..


    Naja, vielleicht wird zuerst a < b ausgewertet, was sagen wir true liefert und dann true < c, wo true möglicherweise zu 1 umgewandelt wird... Bin mir aber nicht sicher ;)

    "Me love technology." -- Cookie Monster
    "Oft ist das Denken schwer, indes // das Schreiben geht auch ohne es." -- Wilhelm Busch

Jetzt mitmachen!

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