package hausuebung.wuerfel;public class NSeitigerWuerfel { // Anzahl der Flaechen private int flaechen; // Konstruktor public void NSeitigerWuerfel(int flaechen) { this.flaechen = flaechen; } // den Wuerfel einmal werfen public int werfen(void) { return (int) ((Math.random() * flaechen) + 1); }}
package hausuebung.Bruch;public class Bruch { // Zaehler und Nenner des Bruchs private long zaehler; private long nenner; // erster Konstruktor => Wert 0 public void Bruch(void) { Bruch(0L, 1L); } // zweiter Konstruktor => eine ganze Zahl public void Bruch(long zahl) { Bruch(zahl, 1L); } // dritter Konstruktor => Zähler und Nenner gegeben // Nenner darf nicht 0 sein => ArithmeticException public void Bruch(long zaehler, long nenner) { this.zaehler = zaehler; if (nenner == 0L) throw new ArithmeticException("ungültiger Bruch"); else this.nenner = nenner; } // addieren von Bruechen public Bruch add(Bruch summand) { // gemeinsamen nenner ermitteln long gemeinsamerNenner = this.nenner * summand.nenner; // die jeweiligen zaehler entsprechend erweitern long summand1Zaehler = this.zaehler * summand.nenner; long summand2Zaehler = summand.zaehler * this.nenner; // neuen Bruch berechnen Bruch summe = new Bruch(summand1Zaehler + summand2Zaehler, gemeinsamerNenner); // kuerzen summe.kuerzen(); // Rückgabe return summe; } // subtrahieren von Brüchen public Bruch subtract(Bruch subtrahend) { // einfach addieren wiederverwenden return add(new Bruch(-subtrahend.zaehler, subtrahend.nenner)); } // multiplizieren von Brüchen public Bruch mulitiply(Bruch faktor) { Bruch produkt = new Bruch(this.zaehler * faktor.zaehler, this.nenner * faktor.nenner); // kürzen produkt.kuerzen(); // Rückgabe return produkt; } // dividieren von Brüchen // zaehler des divisors darf nicht 0 sein, sonst wird ein ungültiger Bruch zurückgegeben => ArithmeticException public Bruch divide(Bruch divisor) { // divisor prüfen if (divisor.zaehler == 0L) throw new ArithmeticException("Division durch 0"); // einfach mit dem Kehrwert multiplizeren return multiply(new Bruch(divisor.nenner, divisor.zaehler)); } // Bruch kürzen public void kuerzen(void) { // alle möglichen teiler durchgehen // wichtig: vom größtmöglichen zum kleinsten for (long teiler = (nenner / 2); teiler > 1 ; --teiler) { // ermitteln, ob das ein teiler des zaehlers ist if (zaehler % teiler == 0) { // kürzen durchführen zaehler /= teiler; nenner /= teiler; // Bruch ist gekürzt => abbrechen break; } } }}