Java:Haus(String adresse, Person besitzer, int anzahlWohneinheiten, Familie[] bewohner){ this.adresse=adresse; this.besitzer=besitzer; this.bewohner = new Familie[anzahlWohneinheiten]; anzahlWohneinheiten=bewohner.length; if(anzahlWohneinheiten<1) { anzahlWohneinheiten=1; } }
Implementieren Sie einen Konstruktor mit adresse, besitzer und anzahlWohneinheit als Parameter.
Die Adresse und der Besitzer sollen übernommen werden.
Danke für alles Leute aber ich versuche gerade meine AssertionErros zu lösen, aber geht auch nicht so wie ich es will in der class Familie.Dann teste doch einmal, was passiert, wenn Du anzahlWohneinheiten beim Aufruf -1 oder so mitgibst.
Also wenn ihr einen Code habt, dann testet ihn doch. Wenn ihr eine NPE bekommt oder das Ergebnis nicht stimmt, dann habt ihr was falsch gemacht. Wenn ihr hier von einem Fehler redet ("Ich bekomme da eine NPE"), dann sagt bitte auch, wenn ihr so ein Problem gelöst bekommt.
Dachte dass kein Wert aufgrund dieser Aussage zugewiesen werden soll bzw. kein this.anzahlWohneinheiten instanziiert werden sollJava:Implementieren Sie einen Konstruktor mit adresse, besitzer und anzahlWohneinheit als Parameter. Die Adresse und der Besitzer sollen übernommen werden.
Ja beim an und abmelden kommt auch ein assertionerrorJa, du könntest recht haben. Allerdings gibt es ja diese Instanzvariable. Wird sie vielleicht in einer anderen Aufgabe zugewiesen?
Müsst ihr halt noch mal schauen, das ist von hier nicht zu klären. Übrigens "instanziiert" ist in diesem Fall das falsche Wort.
Aber ihr werden auf jeden Fall einen Fehler erhalten, wenn ihr den Konstruktor mit einer negativen Anzahl von Wohneinheiten aufruft. Das wurde hier auch schon diskutiert, warum das so ist: Eure Kontrolle, ob der Parameter kleiner als 1 ist findet statt, wenn das Array bereits erzeugt wurde (bzw. der Versuch unternommen wird).
Haus(String adresse, Person besitzer, int anzahlWohneinheiten){
this.adresse=adresse;
this.besitzer=besitzer;
if(anzahlWohneinheiten<1) {
// die Zuweisung an den Parameter ist nicht die feine Art,
// bringt hier aber was, weil der Wert gleich noch
// verwendet wird.
anzahlWohneinheiten=1;
}
this.bewohner = new Familie[anzahlWohneinheiten];
// ggf. noch
// this.anzahlWohneinheiten = anzahlWohneinheiten;
}
/root/autocorrectorj3tUTvdir/PublicTests.java:19: error: incompatible types: Person cannot be converted to int
Haus h = new Haus("Das ist die Adresse", p1, 2);
^
/root/autocorrectorj3tUTvdir/PublicTests.java:43: error: incompatible types: Person cannot be converted to int
Haus h1 = new Haus("Adresse", besitzer, 3);
^
/root/autocorrectorj3tUTvdir/PublicTests.java:79: error: incompatible types: Person cannot be converted to int
Haus h1 = new Haus("Endlosstr. 5, Im Nimmerland", besitzer, 3);
^
/root/autocorrectorj3tUTvdir/PublicTests.java:97: error: incompatible types: Person cannot be converted to int
Haus h2 = new Haus("Endlosstr. 2, Im Nimmerland", besitzer, 3);
^
public class Familie {
private String name;
private Haus meldung;
private Person[] familienmitglieder;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Haus getMeldung() {
return meldung;
}
public void setMeldung(Haus meldung) {
this.meldung = meldung;
}
public Person[] getFamilienmitglieder() {
return familienmitglieder;
}
public void setFamilienmitglieder(Person[] familienmitglieder) {
this.familienmitglieder = familienmitglieder;
}
Familie(String name, Haus meldung, Person[] familienmitglieder){
this.name=name;
this.meldung=meldung;
this.familienmitglieder=familienmitglieder;
}
public boolean ummelden(Haus meldung) {
if(meldung.anmelden(this)&&meldung.abmelden(this)==true) {
return true;
}
if(meldung.anmelden(this)==true && meldung.abmelden(this)==false) {
meldung.abmelden(this);
}
return false;
}
}
1) testFamilie(PublicTests)
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
at org.junit.Assert.assertTrue(Assert.java:41)
at org.junit.Assert.assertTrue(Assert.java:52)
at PublicTests.testFamilie(PublicTests.java:104)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
2) testHaus(PublicTests)
java.lang.AssertionError: expected:<2> but was:<0>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:834)
at org.junit.Assert.assertEquals(Assert.java:645)
at org.junit.Assert.assertEquals(Assert.java:631)
at PublicTests.testHaus(PublicTests.java:22)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
3) testAnAbmelden(PublicTests)
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
at org.junit.Assert.assertTrue(Assert.java:41)
at org.junit.Assert.assertTrue(Assert.java:52)
at PublicTests.testAnAbmelden(PublicTests.java:58)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
public boolean ummelden(Haus meldung) {
if(meldung.anmelden(this)&&meldung.abmelden(this)==true) {
/root/autocorrectorj3tUTvdir/PublicTests.java:19: error: incompatible types: Person cannot be converted to int
Haus h = new Haus("Das ist die Adresse", p1, 2);
^
/root/autocorrectorj3tUTvdir/PublicTests.java:43: error: incompatible types: Person cannot be converted to int
Haus h1 = new Haus("Adresse", besitzer, 3);
^
/root/autocorrectorj3tUTvdir/PublicTests.java:79: error: incompatible types: Person cannot be converted to int
Haus h1 = new Haus("Endlosstr. 5, Im Nimmerland", besitzer, 3);
^
/root/autocorrectorj3tUTvdir/PublicTests.java:97: error: incompatible types: Person cannot be converted to int
Haus h2 = new Haus("Endlosstr. 2, Im Nimmerland", besitzer, 3);
^
* Die "Familie" hat folgende private-Eigenschaften #
* - "name" vom Typ String
* - "meldung" vom Typ Haus
* - "familienmitglieder" vom Typ Person-Array *
* Erstellen Sie Standard Getter und Setter für alle Eigenschaften. * (Bitte automatisch generieren lassen!) *
* Implementieren Sie einen Konstruktor mit name, meldung und familienmitglieder als Parameter.
* Die Parameter-Werte vom Konstruktor sollen bei den Klasseneigenschaften übernommen werden. *
* Implementieren Sie eine public-Methode "ummelden",
* der die Familie vom alten Haus abmeldet und in ein neues Haus anmeldet.
* Die public-Methode "ummelden" erhält ein Haus und gibt ein boolean zurück.
* Die Methode liefert nur dann true, wenn das Anmelden und Abmelden funktioniert hat und
* die Meldung aktualisiert wurde.
* Wenn zum Beispiel die Anmeldung funktioniert aber die Abmeldung nicht, dann muss die Anmeldung
* wieder rückgängig gemacht werden, bevor false zurückgegeben wird. *
* Zum An- und Abmelden kann die Methode aus Haus verwendet werden
* z.B. meldung.abmelden(this); würde dieses Objekt von dem gemeldeten Haus abmelden. *
Das habe ich doch gemacht laut meiner Aufgabe
Na klar habe ich das berücksichtig und es in meiner Methode ummelden so umgesetzt.Bedenke dabei, dass es zwei Variablen mit dem Namen "meldung" gibt! Eine Instanzvariable und einen Parameter. Bei einer muss man sich abmelden, bei der anderen anmelden.
Na klar ich das berücksichtig und es in meiner Methode ummelden so umgesetzt.
In der Aufgabe steht doch wenn anmelden und abmelden klappt soll true zurückgegeben werden und wenn z.b anmelden nicht klappt soll es rückgängig gemacht haben. Das habe ich doch so in meinen zwei if-Bedingungen umgesetzt oder nicht.In der aus #210 ist das nicht der Fall.
Du musst dich bei this.meldung.abmelden() und bei meldung.anmelden().Wie soll ich es sonst machen, dachte mir so geht es auch
Das ist doch das selbe oder nicht?Du musst dich bei this.meldung.abmelden() und bei meldung.anmelden().
Das ist doch das selbe oder nicht?
Wenn Ihr weiter so planlos rumprobiert, wird es bald heißen:
SCNR.Java:immatrikulationsamt.abmelden(jono); immatrikulationsamt.abmelden(xknight);
Ja, ich gebs zu. Wobei man davon ausgehen muss, dass das Immatrikulationsamt es richtig implementiert hat.Was für ein fieser Spaß, aber lustig![]()
Das ist ja noch fieserIch schau mir morgen früh an, wie es ausgegangen ist und geh jetzt ins Bett.
Nur weil ein Konstruktor public ist, heißt es ja nicht, dass alles richtig implementiert ist.Konstruktoren sind bei mir public trotzdem funktioniert es nicht
public boolean ummelden(Haus meldung) {
if(meldung.anmelden(this)&&meldung.abmelden(this)) {
return true;
}
if(meldung.anmelden(this)==true && meldung.abmelden(this)==false) {
meldung.abmelden(this);
}
return false;
}
(/Code]
Wie meinst du das "Nein. Du meldest Dich bei der selben "meldung" an und ab."?