Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wie deklariert man eine Methode, die ein Objekt zurückgeben soll?
Hi Robat,
Also könnte ich dann auch sowas machen:?
Java:
public Object multiplyBy(Fraction f) {
int c;
int d;
int e;
int g;
Fraction w = new Fraction(c, d);
Fraction b = new Fraction(e, g);
f = new Fraction((c * e), (d * g));
return this;
}
Also die Aufgabe ist:
Fraction-Objekte haben eine Methode multiplyBy, deren einziger formaler
Parameter eine Referenz auf ein weiteres Fraction-Objekt ist. Die Methode
gibt ein neues Fraction-Objekt zurück, welches das Produkt der beiden Brüche
(Nachrichtenempfänger und Parameter) repräsentiert.
D.h. ich bin mir nicht sicher.
ok, habs gemerkt und geändert, danke . Kannst Du mir noch einen Tipp geben, warum es erforderlich ist, die
Variablen c,d,e und g zu initialisieren, denn ich bekomme dort überall "the local variable may not have been initialized"?
Anders als Instanzvariablen, bekommen lokale Variablen in Java keinen default Wert. Da du auf eine nicht initialisierte Variable zugreifen willst, kommt es zu dem Fehler.
Hallo Leut,
Ich hab jetzt mal die Variablen entfernt und versuche es jetzt ohne .
Die Aufgabe lautet:
Erstellen Sie eine Klasse Fraction zur Beschreibung von Brüchen, welche die folgenden
Vorgaben umsetzt:
• Ein Fraction-Objekt hat zwei ganzzahlige Instanzvariablen numerator und
denominator (Zähler und Nenner). Auf diese Instanzvariablen soll aus fremden
Klassen nicht zugegriffen werden können.
• Die Klasse Fraction deklariert einen Konstruktor, dem zwei ganzzahlige Parameter
übergeben werden müssen. Der Konstruktor soll die Instanzvariablen des
Bruchs mit denWerten der übergebenen Parameter initialisieren. Der Konstruktor
soll deklarieren, eine Ausnahme des Typs IllegalArgumentException auslösen
zu können. Diese Ausnahme soll ausgelöst werden, wenn dem Konstuktor für
den Nenner der Wert 0 übergeben wird.
• Fraction-Objekte haben eine Methode multiplyBy, deren einziger formaler
Parameter eine Referenz auf ein weiteres Fraction-Objekt ist. Die Methode
gibt ein neues Fraction-Objekt zurück, welches das Produkt der beiden Brüche
(Nachrichtenempfänger und Parameter) repräsentiert.
• Fraction-Objekte haben eine parameterlose Methode toString. Die Methode
gibt ein String-Objekt zurück, welches das Fraction-Objekt in der Form
Zähler-Bruchstrich-Nenner repräsentiert, also z.B. "3/4" für den Bruch mit dem
Zähler 3 und dem Nenner 4.
Testen Sie Ihre Klasse ausgiebig. Erstellen Sie dazu eine Testklasse mit main-Methode!
Mein jetzt geänderter Code lautet:
Java:
class Fraction {
int numerator;
int denominator;
Fraction(int numerator, int denominator) {
this.numerator = numerator;
this.denominator = denominator;
try {
if (denominator == 0) {
throw new Exception();
}
} catch (IllegalArgumentException e) {
System.out.println("Division durch 0 nicht erlaubt.");
} catch (Exception e) {
System.out.println("");
}
}
public Object multiplyBy(Fraction f) {
f=( ((Object.numerator)*(f.numerator)),((Object.denominator)*(f.denominator));
return f;
}
public String toString() {
String strich = (strich.numerator + "/" + strich.denominator);
return strich;
}
}
public class FractionTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Fraction bruch = new Fraction(1, 2);
Fraction bruch2 = new Fraction(2, 3);
Object f = bruch.multiplyBy(bruch2);
System.out.println("Ergebnis" + f.toString());
}
}
2. Das stimmt so nicht. Die Klasse "Object" kennt z.B. keinen "numerator". Außerdem sollst du ja ein neues Fraction-Objekt zurückgeben, welches dem Produkt aus "this" und "f" entspricht.
3. Der "try..catch"-Abschnitt im Konstruktor ist völlig überflüssig. Was du möchtest ist:
Prüfen, ob der Nenner Null ist
und falls das zutrifft eine Exception auslösen.
Du löst eine Exception aus und fängt sie sofort wieder ab.
Ein Fraction-Objekt hat zwei ganzzahlige Instanzvariablen numerator und
denominator (Zähler und Nenner). Auf diese Instanzvariablen soll aus fremden
Klassen nicht zugegriffen werden können.
eine Ausnahme des Typs IllegalArgumentException auslösen
zu können. Diese Ausnahme soll ausgelöst werden, wenn dem Konstuktor für
den Nenner der Wert 0 übergeben wird
2. Das stimmt so nicht. Die Klasse "Object" kennt z.B. keinen "numerator". Außerdem sollst du ja ein neues Fraction-Objekt zurückgeben, welches dem Produkt aus "this" und "f" entspricht.
Mein letztes Problem ist jetzt, dass bei public class FractionTest die Fehlermeldung steht:
"the public type FractionTest must be defined in its own file.", obwohl ich schonmal ein Bsp. gesehen habe (Buch),
wo alles in einer Datei war.
Hat doch neulich irgendwo erst wer geschrieben (ich glaub mihe7): Du kannst pro Datei nur eine (öffentliche) Klasse deklarieren. Kann es sein daß du diese Regel verletzt?