4.6 Lösungen
4.6 Lösungen4.6.1 Arithmetikmethoden
public class Rechenarten {
    public static double add(double a, double b) {
        return (a + b);
    }
    public static double sub(double a, double b) {
        return (a - b);
    }
    public static double mul(double a, double b) {
        return (a * b);
    }
    public static double div(double a, double b) {
        return (a / b);
    }
    public static int add(int a, int b) {
        return (a + b);
    }
    public static int sub(int a, int b) {
        return (a - b);
    }
    public static int mul(int a, int b) {
        return (a * b);
    }
    public static int div(int a, int b) {
        return (a / b);
    }
    public static void main(String[] args) {
        double ergebnis1;
        int ergebnis2;
  
        ergebnis1 = add(5.0, 4.0);
        System.out.println(" 5.0 + 4.0 = " + ergebnis1);
        ergebnis1 = div(9.0, 4.0);
        System.out.println(" 9.0 / 4.0 = " + ergebnis1);
        ergebnis1 = sub(9.0, 4.0);
        System.out.println(" 9.0 - 4.0 = " + ergebnis1);
        ergebnis1 = add(div(9.0, 4.0), 3.0);
        System.out.println(" 9.0 / 4.0 + 3.0 = " + ergebnis1);
 
        ergebnis2 = add(5, 4);
        System.out.println(" 5 + 4 = " + add(5, 4));
        ergebnis2 = div(9, 4);
        System.out.println(" 9 / 4 = " + div(9, 4));
        ergebnis2 = sub(9, 4);
        System.out.println(" 9 - 4 = " + sub(9, 4));
        ergebnis2 = add(div(9, 4), 3);
        System.out.println(" 9 / 4 + 3 = " + add(div(9, 4), 3));
    } 
}4.6.2 Flächenberechnung vom Dreieck
public class Dreiecksflaeche {  
    /**
     * Berechnung der Fläche eines Deiecks mit drei beliebigen Seiten.
     * Es wird nicht geprüft ob die Seitenlängen ein korrektes Dreieck ergeben
     * @param a Länge Seite 1
     * @param b Länge Seite 2
     * @param c Länge Seite 3
     * @return Fläche des Dreiecks
     */
    public static double flaeche(double a, double b, double c) {
        double s = (a+b+c)/2;
        return Math.sqrt(s*(s-a)*(s-b)*(s-c));
    }
    /**
     * Berechnung der Fläche eines gleichschenkligen Deiecks.
     * Es wird nicht geprüft ob die Seitenlängen ein korrektes Dreieck ergeben
     * @param gleicherSchenkel die Länge der beiden gleichlangen Seiten
     * @param basis Länge der Basis
     * @return 
     */
    public static double flaeche(double gleicherSchenkel, double basis) {
    return flaeche(gleicherSchenkel,gleicherSchenkel,basis);
    }
    /**
     * Berechnung der Fläche eines gleichschenkligen Deiecks
     * @param gleicheSeite Länge der Seite
     * @return 
     */
    public static double flaeche(double gleicheSeite) {
    return flaeche(gleicheSeite,gleicheSeite);
    }
    /**
     * Berechnung der Fläche eines rechtwinkligen Dreiecks mit zwei Katheden
     * @param k1 Länge erste Kathede
     * @param k2 Länge zweite Kathede
     * @return Fläche
     */
    public static double flaecheKathedenDreieckeck(double k1, double k2){
    return flaeche(Math.sqrt(k1*k1+k2*k2),k1,k2);
    }
    /**
     * Berechnung der Fläche eines rechtwinkligen Dreiecks mit einer
     * Hypotenuse und einer Kathede
     * @param h Länge Hypothenuse
     * @param k Länge Kathede
     * @return Fläche
     */
    public static double flaecheKathedeHypothenuseDreieck(double h, double k){
    return flaecheKathedenDreieckeck(k,Math.sqrt(h*h-k*k));
    }
    /**
      * Hauptprogrsam zum Testen
      * @param args keine Eingabeparameter
      */
    public static void main(String[] args) {
        double aa = 3.0d;
        System.out.println(flaeche(aa,4D,5D));
        System.out.println(flaeche(5D,4D));
        System.out.println(flaeche(3D));
        System.out.println(flaecheKathedenDreieckeck(3D,4D));
        System.out.println(flaecheKathedeHypothenuseDreieck(5D,4D));
    }
}
4.6.3 Rekursive Addition und Multiplikation
Multiplikation mit Hilfe einer addierenden for-Schleife:
public class Arithmetik1 {
    public static void main(String[] args) {
        int a=5;
        int b=8;
        int c=0;
        if (args.length > 1) {
            try {
                a = Integer.parseInt(args[0]);
                b = Integer.parseInt(args[0]);
            } catch (NumberFormatException e) {
                System.err.println("Argument muss Ganzzahl sein");
                System.exit(1);
            }
        }
        System.out.println("Eingabe a: " + a +"; b: " +b);
for (int i=0; i<b; i++) {
            c += a;
        }
        System.out.print("Ergebnis c: " + c); 
        if (c == a*b)
            System.out.println(" (korrekt)");
        else
            System.out.println(" (falsch. Richtig ist " + (a*b)+")");
    }
}
Delegation an eine Methode
public class Arithmetik2 {
    public static void main(String[] args) {
        int a=5;
        int b=8;
        int c=0;
        if (args.length > 1) {
            try {
                a = Integer.parseInt(args[0]);
                b = Integer.parseInt(args[0]);
            } catch (NumberFormatException e) {
                System.err.println("Argument muss Ganzzahl sein");
                System.exit(1);
            }
        }
        System.out.println("Eingabe a: " + a +"; b: " +b);
c = mult(a,b);
        System.out.print("Ergebnis c: " + c); 
        if (c == a*b)
            System.out.println(" (korrekt)");
        else
            System.out.println(" (falsch. Richtig ist " + (a*b)+")");
    }
public static int mult(int x, int y) {
        int ergebnis=0;
        for (int i=0; i<x; i++) {
            ergebnis += y;
        }
        return ergebnis;
    }  
}
Eine rekursive Multiplikation
public class Arithmetik3 {
    public static void main(String[] args) {
        int a=5;
        int b=8;
        int c=0;
        if (args.length > 1) {
            try {
                a = Integer.parseInt(args[0]);
                b = Integer.parseInt(args[0]);
            } catch (NumberFormatException e) {
                System.err.println("Argument muss Ganzzahl sein");
                System.exit(1);
            }
        }
        System.out.println("Eingabe a: " + a +"; b: " +b);
        c = mult(a,b);
        System.out.print("Ergebnis c: " + c); 
        if (c == a*b)
            System.out.println(" (korrekt)");
        else
            System.out.println(" (falsch. Richtig ist " + (a*b)+")");
    }
    /**
     * Diese Methode multipliziert zwei Zahlen rekursiv.
     * Sie funktioniert nur für x Werte die nicht negativ sind!
     * @param x darf nicht negativ sein
     * @param y 
     * @return Ergebnis einer Multiplikation
     */
public static int mult(int x, int y) {
        int ergebnis=0;
        if (x==0) 
            ergebnis=0;
        else 
            ergebnis=mult(y,(x-1))+y;
        return ergebnis;
    } 
}
Multiplikation mit rekursiver Addition und Multiplikation
public class Arithmetik4 {
    public static void main(String[] args) {
        int a=5;
        int b=8;
        int c=0;
        if (args.length > 1) {
            try {
                a = Integer.parseInt(args[0]);
                b = Integer.parseInt(args[0]);
            } catch (NumberFormatException e) {
                System.err.println("Argument muss Ganzzahl sein");
                System.exit(1);
            }
        }
        System.out.println("Eingabe a: " + a +"; b: " +b);
        c = mult(a,b);
        System.out.print("Ergebnis c: " + c); 
        if (c == a*b)
            System.out.println(" (korrekt)");
        else
            System.out.println(" (falsch. Richtig ist " + (a*b)+")");
    }
    /**
     * Diese Methode multipliziert zwei Zahlen rekursiiv.
     * Sie funktioniert nur für x Werte die nicht negativ sind!
     * @param x darf nicht negativ sein
     * @param y 
     * @return Ergebnis einer Multiplikation
     */
    public static int mult(int x, int y) {
        int ergebnis=0;
        if (x==0) 
            ergebnis=0;
        else 
            ergebnis=add(mult(y,(x-1)),y);
        return ergebnis;
    }
    /**
     * Diese Methode addiert zwei Zahlen rekursiv.
     * Sie funktioniert nur für x Werte die nicht negativ sind!
     * @param x darf nicht negativ sein
     * @param y 
     * @return Ergebnis einer Multiplikation
     */
public static int add(int x, int y) {
        int ergebnis=0;
        if (y==0) 
            ergebnis=x;
        else {
            ergebnis=add(x,(y-1));
            ergebnis++;
        }
        return ergebnis;
    }
} 
- 6268 views