Erste Schritte Größter Abstand von 2 Zahlen aus 3 Zahlen ausgeben

bradeer

Mitglied
Hallo miteinander,
im Grunde gibt es bereits ein Thread zu meinem Problem, welches aber von 2012 stammt, und von einem eher erfahrenen Programmierer gestellt wurde (was ich sicherlich nicht bin).
Der Link hirzu:
http://www.java-forum.org/thema/gro...len-ausgeben-mit-restriktionen-schwer.142835/

Ich habe im Grunde das selbe Problem wie der Herr bulldozer, doch kann leider mit den Antworten, die er zu dieser Frage bekam, nichts anfangen.
Ich bedanke mich voraus für kommende Antworten 🙂
 
Also hier mal eine Lösung, wie sie in der ersten Antwort vorgeschlagen wurde:
Java:
public void maxAbstand(int a, int b, int c){
        int max=a, min=a; //Variablen initialisieren
        int[] array = new int[]{a, b, c}; //Variablen in Array schreiben
        for(int i: array){ //Über Array iterieren
            if(i>max){  // Falls Zahl i größer als aktuelles max => max = i
                max=i;
            }
            if(i<min){ //Falls Zahl i kleiner als aktuelles min => min = i
                min=i;
            }
        }
        System.out.println("Größter Abstand zwischen "+min+" und "+max);
     
    }

Du speicherst dir die 3Variablen in ein Array und merkst dir immer min und max.
Dann durchläufst du das Array einmal und setzt min und max neu falls du eine kleinere bzw. größere Zahl als dein altes min/max findest.
 
Also erst einmal vielen Dank für die Antwort und danke dafür, dass du dir die Zeit dazu genommen hast.
Ich hätte aber lieber noch einmal anmerken sollen, dass wir an der Uni noch nicht bei Arrays angekommen sind, wir sind noch bei Schleifen, und deswegen weiß ich nicht, ob ich diese Lösung verwenden darf.
Ich bräuchte also quasi eine Lösung, die allein mit Fallunterscheidung if, else, else if und den for-, while- und do-schleifen klarkommt.
 
Dann würde ich dir sowas vorschlagen:
Java:
public static void maxAbstand(int a, int b, int c){
       
        int min = min(a, min(b,c));
        int max = max(a, max(b,c));
        System.out.println("Größter Abstand zwischen "+min+" und "+max);
    }
   
    public static int max(int a, int b){
        if(a>b){
            return a;
        }
        return b;
    }
    public static int min(int a, int b){
        if(a<b){
            return a;
        }
        return b;
    }

Du schreibst dir zwei sehr simple Hilfsfunktionen die das Minimum bzw Maximum von 2 Zahlen zurückgeben. Dann ist die eigentliche Methode sehr einfach. Finde ich persönlich schöner als alle if-else Abfragen in einer Funktion zu verschachteln.
 
War vermutlich auch nicht ganz schlau den Rückgabewert void zu machen.
Lieber auf int ändern und max-min zurückgeben 😉
 

Zurück
Oben