Kleine Frage zu OOP

jono

Top Contributor
Danke @temi ,somit weiß ich für das nächste Mal Bescheid wie ich bei einem ähnlichen Problem eventuell vorgehen kann. Ja es ist schwer zu sagen ab wann man lernerfolg sehen sollte abgesehen kann man so sehen dass ich es können müsste nach den Hilfeanweisungen oder nicht, vielleicht wird es besser und da bin ich ziemlich optimistisch weil ich mir wirklich mühe gebe. Will euch ja gar nicht in dem Sinne schlecht beurteilen das hat damit ja gar nichts zu tun, das ist ja denke ich auch klar.
Eine Frage hätte ich da noch zu der vorher beschriebenen Fehlermeldung, warum habe ich da eine nullpointerexception?
 

temi

Top Contributor
Eine Frage hätte ich da noch zu der vorher beschriebenen Fehlermeldung, warum habe ich da eine nullpointerexception?

Kannst du dir vorstellen, was die Meldung bedeutet?

Schau dir mal diese beiden Zeilen an:
Java:
anzahlWohneinheiten = bewohner.length;
this.bewohner = new Familie[anzahlWohneinheiten];

Edit: Außerdem sind noch mehr Fehler in dieser Methode im Konstruktor, sowie in der Methode anmelden().
 
Zuletzt bearbeitet:

temi

Top Contributor
Witzig! Ich nehme mal an es handelt sich um Kommilitonen...

Java:
Haus(String adresse,  Person besitzer, int anzahlWohneinheiten){
    this.adresse = adresse;
    this.besitzer = besitzer;
     
    anzahlWohneinheiten = bewohner.length; // Welcher Variablen wird hier etwas zugewiesen?
    this.bewohner = new Familie[anzahlWohneinheiten];
     
    if (anzahlWohneinheiten < 1) { // Was soll das bezwecken?
        anzahlWohneinheiten = 1;
    }
}
 

Xknight

Aktives Mitglied
Laut der Aufgabe bestimmt die azahlWohneinheiten die Länge des Arrays und wenn die anzahlWohneinheiten kleiner eins ist soll anzahlWohneinheiten eins sein.
Das soll damit gemeint sein. Darum sehe ich im Konstruktor keine Fehler.
 

temi

Top Contributor
Laut der Aufgabe bestimmt die azahlWohneinheiten die Länge des Arrays und wenn die anzahlWohneinheiten kleiner eins ist soll anzahlWohneinheiten eins sein.
Das soll damit gemeint sein. Darum sehe ich im Konstruktor keine Fehler.

Das ist mir schon klar, aber was soll die Abfrage nachdem das Array bereits erzeugt wurde?
 

Xknight

Aktives Mitglied
In der Methode anmelden() sollen wir in einer freien Stellen einen Bewohner hinzufügen.
So lautet mein Quellcode.
Da sehe ich keinen Fehler.
Code:
public boolean anmelden(Familie someFam) {
         for(int i = 0; i < bewohner.length; i++) {
                if(bewohner[i] == null) {
                    bewohner[anzahlWohneinheiten++] = someFam;
                }
         }
      
         for (int i = 0; i < bewohner.length-1; ++i)
              for (int j = i+1; j < bewohner.length; ++j)
                if (bewohner[i] == bewohner[j]) {
                    return false;
                }
        return true;
    }
Mit dieser Abfrage überprüfe ich ob die anzahlWohneinheiten kleiner 1 ist und mit den for-Schleifen überprüfe ich ob Redundanzen im Array vorhanden sind.
 

temi

Top Contributor
Da sehe ich keinen Fehler.

Doch. Ist fehlerhaft.

Warum will hier jeder das Feld anzahlWohneinheiten hochzählen? Die Anzahl der Wohneinheiten wird im Konstruktor festgelegt und ändert sich nicht mehr. Das hier Werte über Setter-Methoden geändert werden können ist gequirlte Scheiße, aber da könnt ihr nichts dafür, dass will eure Aufgabe so. Aber soweit ich die Aufgabe für anmelden() richtig im Kopf habe, muss hier die Anzahl der Wohneinheiten dieses Hauses nicht geändert werden. Eine freie Wohneinheit soll gesucht und durch eine Familie belegt werden, sofern diese Familie nicht schon im Haus wohnt.

überprüfe ich ob Redundanzen im Array vorhanden sind.

Sollte man das nicht vor dem Einfügen der neuen Familie machen?
 

Xknight

Aktives Mitglied
Da hast du recht mit den Rudandanzen, aber bei einer frei leer markierten Stelle soll ein Bewohner hinzugefügt werden und dass habe ich mit diesem code bewohner[anzahlWohneinheiten++] gemacht oder wie siehst du es?
 

Xknight

Aktives Mitglied
So sieht meine neue Methode aus
Code:
public boolean anmelden(Familie someFam) {
         for (int i = 0; i < bewohner.length-1; ++i)
              for (int j = i+1; j < bewohner.length; ++j)
                if (bewohner[i] == bewohner[j]) {
                    return false;
                }else  if(bewohner[i] == null) { 
                    bewohner[anzahlWohneinheiten++] = someFam; 
                }
        return true;
    }
 

temi

Top Contributor
Da hast du recht mit den Rudandanzen, aber bei einer frei leer markierten Stelle soll ein Bewohner hinzugefügt werden und dass habe ich mit diesem code bewohner[anzahlWohneinheiten++] gemacht oder wie siehst du es?
Hast du nicht.

Nehmen wir mal an es gibt 10 Wohneinheiten. Du hast also ein Array "bewohner" mit der Größe 10 erstellt. Mit deinem Code weist du bewohner[10] (weil anzahlWohneinheiten = 10) eine neue Familie zu und erhöhst danach die Anzahl auf 11.

  1. bewohner[10] verursacht eine Exception, weil der höchste Index 9 ist
  2. Du möchtest an der freien Stelle eine Familie zuweisen. Machst du aber nicht.
  3. Die Anzahl der Wohneinheiten soll sich nicht ändern.
  4. Du solltest vor der Zuweisung prüfen, ob die Familie schon im Haus ist
 

Xknight

Aktives Mitglied
Die überprüft ob ein Wert im Array doppelt vorkommt und wenn ja gibt er es als false zurück und wenn nicht fügt er ein Bewohner hinzu in der frei markierten Stelle
 

temi

Top Contributor
Wie sieht denn dein Lösungsvorschlag denn aus?
Ich schlage vor, ihr beginnt mal zu denken. Das ist echt sehr einfach (also das Problem, das Denken anscheinend nicht).

Die erste Schleife deiner ursprünglichen Lösung war schon fast richtig. Du musst nur die Familie an die richtige Stelle im Array zuweisen. Und was ist die richtige Stelle? Wo hast du denn den freien Platz gefunden?

Für die Prüfung, ob die Familie bereits existiert, kopiere die Schleife und setze sie vor der Schleife mit der Zuweisung. Dann passt du die Abfrage an und sobald eine identische Familie gefunden ist, kannst du mit return false; die Methode verlassen.
 

temi

Top Contributor
In der Methode anmelden() sollen wir in einer freien Stellen einen Bewohner hinzufügen.
So lautet mein Quellcode.
Da sehe ich keinen Fehler.
Code:
public boolean anmelden(Familie someFam) {
         for(int i = 0; i < bewohner.length; i++) {
                if(bewohner[i] == null) {
                    bewohner[anzahlWohneinheiten++] = someFam;
                }
         }
     
         for (int i = 0; i < bewohner.length-1; ++i)
              for (int j = i+1; j < bewohner.length; ++j)
                if (bewohner[i] == bewohner[j]) {
                    return false;
                }
        return true;
    }
Mit dieser Abfrage überprüfe ich ob die anzahlWohneinheiten kleiner 1 ist und mit den for-Schleifen überprüfe ich ob Redundanzen im Array vorhanden sind.

Oh Mann. Ihr seid ja echt drauf!
 

mihe7

Top Contributor
Anstatt weiterzuhelfen einfach hängen lassen oder einfach mal diese Kleinigkeit vorzusagen wäre echt kein Akt, das merke ich mir und lerne auch daraus so ist es nicht aber sich so zu äußern wie ihr bringt mich auch null weiter, außerdem ist das eine kleinigkeit an der ich hänge die ich einfach nicht im stande bin zu beheben, weil ich das noch NIE gemacht habe. Der Rest ist schon alles korrekt außer das mit der Methode.
Jono, das Thema Arrays hatten wir ausführlichst unter https://www.java-forum.org/thema/zw...-und-in-eindimensionales-ueberfuehren.186409/ Dort wurde Dir in über 300(!) Beiträgen der Spaß x-mal erklärt und das ist jetzt 14 Tage her.

Hier geht es um die Umsetzung eines einfachen Algorithmus, den Du erstens sofort hinschreiben können müsstest und Dir @temi in #73 haarklein aufgeschrieben hat.

Noch genauer "helfen" würde bedeuten, Dir den fertigen Code zu geben. Das gibt es hier normalerweise nicht.
 
K

kneitzel

Gast
Java:
Haus(String adresse,  Person besitzer, int anzahlWohneinheiten){
    ...
    anzahlWohneinheiten = bewohner.length; // Welcher Variablen wird hier etwas zugewiesen?
    ...
}

Also was für einen Sinn macht ein Parameter, wenn ihr den Wert ignoriert und einfach irgendwie überschreibt?

Java:
public boolean anmelden(Familie someFam) {
         for(int i = 0; i < bewohner.length; i++) {
                if(bewohner[i] == null) {
                    bewohner[anzahlWohneinheiten++] = someFam;
                }
         }
    ...
    }

Was macht Ihr da? Ihr sucht eine freie Stelle und dann ignoriert ihr die freie Stelle und packt es einfach woanders rein?
 
K

kneitzel

Gast
Das sind die Nummern der Beiträge. Findest Du oberhalb auf der Rechten Seite.

Und #130 zeigt es auch noch einmal etwas auf. Wie kann es richtig programmiert sein, wenn Du ein Argument, das vorgegeben ist, nicht verwendest?

Wie kann man fragen, ob etwas richtig ist, wenn ihr eine NullPointerException bekommen habt?

Was macht der Konstruktor? Ein Konstruktor ist doch dazu da, Dinge zu initialisieren. Wie kommt ihr auf die Idee, auf ein Element zugreifen zu können, dass noch nicht initialisiert ist?

@temi: Wie schaffst Du es, das auszuhalten?
 

mihe7

Top Contributor
1. Was bewirkt dieser Code?
Java:
void doSomething(int x) {
   if (x < 1) {
       x = 1;
   }
}

2. Was bewirkt dieser Code?
Java:
Haus(int x) {
    x = bewohner.length;
}
 

temi

Top Contributor
Das Ding ist wir haben doch beim Konstruktor alles definiert und wir sollten nur die übernehmen.

Ach Leute. Was ist denn so schwer daran mal die Kommentare durchzulesen und dann darüber nachzudenken.

Java:
Haus(String adresse,  Person besitzer, int anzahlWohneinheiten){
    this.adresse = adresse;
    this.besitzer = besitzer;
    
    anzahlWohneinheiten = bewohner.length; // Welcher Variablen wird hier etwas zugewiesen?
    this.bewohner = new Familie[anzahlWohneinheiten];
    
    if (anzahlWohneinheiten < 1) { // Was soll das bezwecken?
        anzahlWohneinheiten = 1;
    }
}
 

Xknight

Aktives Mitglied
* Implementieren Sie einen Konstruktor mit adresse, besitzer und anzahlWohneinheit als Parameter.
* Die Adresse und der Besitzer sollen übernommen werden.
* Wenn die Anzahl der Wohneinheiten kleiner als 1 sein sollte, dann soll 1 dafür verwendet werden.
* Die Anzahl der Wohneinheiten definiert die Länge des Arrays der Bewohner.
* Zu Beginn wohnen keine Bewohner und die Elemente des Arrays sind alle "null".
Also habe ich genau so programmiert im Konstruktor.
 

temi

Top Contributor
* Implementieren Sie einen Konstruktor mit adresse, besitzer und anzahlWohneinheit als Parameter.
* Die Adresse und der Besitzer sollen übernommen werden.
* Wenn die Anzahl der Wohneinheiten kleiner als 1 sein sollte, dann soll 1 dafür verwendet werden.
* Die Anzahl der Wohneinheiten definiert die Länge des Arrays der Bewohner.
* Zu Beginn wohnen keine Bewohner und die Elemente des Arrays sind alle "null".
Also habe ich genau so programmiert im Konstruktor.

Ist dein Konstruktor anders, als der von jono aus #142? Der in #142 ist fehlerhaft.
 

albanhu

Mitglied
* Implementieren Sie einen Konstruktor mit adresse, besitzer und anzahlWohneinheit als Parameter.
* Die Adresse und der Besitzer sollen übernommen werden.
* Wenn die Anzahl der Wohneinheiten kleiner als 1 sein sollte, dann soll 1 dafür verwendet werden.
* Die Anzahl der Wohneinheiten definiert die Länge des Arrays der Bewohner.
* Zu Beginn wohnen keine Bewohner und die Elemente des Arrays sind alle "null".
Also habe ich genau so programmiert im Konstruktor.
Ich hatte die Aufgabe auch mal und bei mir wurde die ganze Zeit auch die Fehlermeldung angezeigt …
Falls du es gelöst hast könntest mal erklären wie du es geschafft hast ? wäre echt cool :)
 

Xknight

Aktives Mitglied
Java:
Haus(String adresse,  Person besitzer, int anzahlWohneinheiten){
        this.adresse=adresse;
        this.besitzer=besitzer;
        
        anzahlWohneinheiten = bewohner.length;
        this.bewohner = new Familie[anzahlWohneinheiten];
        
        if(anzahlWohneinheiten<1) {
            anzahlWohneinheiten=1;
        }
Genau so steht es bei mir?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Kleine Frage zu Threads Java Basics - Anfänger-Themen 3
O Kleine Frage zu Iterator und Iterable Java Basics - Anfänger-Themen 6
O Kleine Frage zu cast Java Basics - Anfänger-Themen 3
U DOM Parser, kleine Frage Java Basics - Anfänger-Themen 29
O Konsole - Kleine Frage Java Basics - Anfänger-Themen 22
ScottGambler Kleine Frage Java Basics - Anfänger-Themen 13
T Kleine Frage Java Basics - Anfänger-Themen 2
A Java Flächeninhaltsberechnung kleine Frage Java Basics - Anfänger-Themen 8
T Kleine Frage zu Collections Java Basics - Anfänger-Themen 3
Luk10 Dateipfad beim Laden einer Datei + Neue kleine Frage! Java Basics - Anfänger-Themen 11
U actionListener - eine Kleine Frage Java Basics - Anfänger-Themen 7
J Kleine Frage zu Methoden & OOP Java Basics - Anfänger-Themen 4
ModellbahnerTT Kleine Frage zu doppelten Arrays Java Basics - Anfänger-Themen 3
hdi Kleine Design/Convention Frage zu Konstruktoren Java Basics - Anfänger-Themen 4
R Kleine Frage zu Array Java Basics - Anfänger-Themen 2
M Eine kleine Frage bzw kleine Theorie frage String[arg] Java Basics - Anfänger-Themen 6
P Eine kleine Frage. Java Basics - Anfänger-Themen 4
M kleine sql abfrage Frage Java Basics - Anfänger-Themen 5
Z kleine frage zu: Runtime.getRuntime().exec("cmd /c) Java Basics - Anfänger-Themen 3
M Zufallszahl - kleine Frage Java Basics - Anfänger-Themen 4
G kleine Frage Java Basics - Anfänger-Themen 4
J Kleine Connection Frage Java Basics - Anfänger-Themen 4
M Kleine Frage zu If-Bedingung Java Basics - Anfänger-Themen 4
X Kleine Frage: Split Java Basics - Anfänger-Themen 13
A Noch ne kleine Beanshell Frage Java Basics - Anfänger-Themen 7
H Suche jemanden für kleine Uni-Abgabe/ mit Vergütung Java Basics - Anfänger-Themen 1
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
B Scanner-If/else kleine Abhebungs-Simulation Java Basics - Anfänger-Themen 3
L Kleine Hilfe beim Schreiben eines Programmes benötigt :D Java Basics - Anfänger-Themen 40
M Welches Framework für kleine WebApp nutzen? Java Basics - Anfänger-Themen 6
D Kleine Probleme mit Split-Befehlen Java Basics - Anfänger-Themen 5
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
CptK Interface Kleine Kreise in großem Kreis anordnen Java Basics - Anfänger-Themen 3
CT9288 Kleine Simulation programmieren, denkanstöße erbeten Java Basics - Anfänger-Themen 19
T Klassen Kleine Übung zum Thema Klassen Java Basics - Anfänger-Themen 3
N BierSpiel von "Kopf bis Fuss" eigener Code...kleine Problemstellung. Java Basics - Anfänger-Themen 11
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
TheSorm Kleine Speicher Klasse Java Basics - Anfänger-Themen 24
F Speicherlast mehrere GB durch kleine png files? Java Basics - Anfänger-Themen 1
T Kleine Anfängerfrage :) Java Basics - Anfänger-Themen 4
T Kleine Klausurfragen Java Basics - Anfänger-Themen 17
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
Q Vererbung Kleine Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 5
DStrohma Best Practice Hibernate für kleine Anwendung nutzen? Java Basics - Anfänger-Themen 4
N kleine get-Methode anhand einer Aufgabenstellung Java Basics - Anfänger-Themen 13
D Kleine Rechenregel... ++a Java Basics - Anfänger-Themen 4
M Erste Schritte 2 Kleine Programme Java Basics - Anfänger-Themen 27
B Kleine Erklärung zu einer Codezeile benötigt Java Basics - Anfänger-Themen 5
H Datei in kleine Stücke teilen und wieder erkennen Java Basics - Anfänger-Themen 10
P eigene kleine Datenverwaltung Java Basics - Anfänger-Themen 5
K Erste Schritte Kleine Verständnisfrage Java Basics - Anfänger-Themen 12
S Erste Schritte Zwei kleine Fragen zu [], int und Konstruktor Java Basics - Anfänger-Themen 3
S Erste Schritte Kleine Problem mit Ausgabe in eine Datei Java Basics - Anfänger-Themen 11
G Kleine Java Programme aus Main Java Programm starten..... Java Basics - Anfänger-Themen 3
R Sehr kleine doubles nicht in Exponentialdarstellung ausgeben Java Basics - Anfänger-Themen 3
H Datenbank suche in kleine Schritte Java Basics - Anfänger-Themen 6
O kleine SwingFrame Java Basics - Anfänger-Themen 3
J BlueJ! 2 kleine Fragen zum Spiel. Java Basics - Anfänger-Themen 3
J Kleine Datenbank programmieren Java Basics - Anfänger-Themen 2
J Eigene kleine Datenbank programmieren Java Basics - Anfänger-Themen 2
H Warum funktioniert diese kleine Methode nicht? Java Basics - Anfänger-Themen 8
E Kleine Hilfe für einen Einsteiger Java Basics - Anfänger-Themen 18
M kleine Verständisfrage zur Klassenhierarchie, speziel JMenuItem Java Basics - Anfänger-Themen 8
B Paar kleine Grundsatzfragen zu Java Java Basics - Anfänger-Themen 5
M kleine und einfache Verständnisfrage Java Basics - Anfänger-Themen 3
S 2 kleine Methoden negieren und print Java Basics - Anfänger-Themen 8
J if und kleine double Werte Java Basics - Anfänger-Themen 7
H kleine zwischenfrage string Java Basics - Anfänger-Themen 3
Y Kleine Verständnisfrage zum Thema dynamische Polymorphie Java Basics - Anfänger-Themen 3
M Kleine Konsole mit Threads + KeyAdapter Java Basics - Anfänger-Themen 6
hdi kleine Verständnisfrage lokale + Member Variable Java Basics - Anfänger-Themen 10
B kleine Probleme beim auslesen einer m3u Datei Java Basics - Anfänger-Themen 3
G eine kleine verwaltung Java Basics - Anfänger-Themen 2
Povlsen84 Initlialisierung, Vector, serialVersionUID . kleine Fragen Java Basics - Anfänger-Themen 4
M Kleine Anfängerfrage Java Basics - Anfänger-Themen 10
D kleine Passwortabfrage erstellen incl. Method zum verändern Java Basics - Anfänger-Themen 7
G jFTP - kleine Fragen Java Basics - Anfänger-Themen 2
K Kleine Fragen über Arrays Java Basics - Anfänger-Themen 8
K Hallo, Ich suche kleine Java Program-Aufgaben zum üben ? Java Basics - Anfänger-Themen 4
S kleine suche Java Basics - Anfänger-Themen 9
D kleine spielerei mit swing Java Basics - Anfänger-Themen 5
A Kleine Tabelle . Java Basics - Anfänger-Themen 8
U kleine datenbank Java Basics - Anfänger-Themen 86
Q Wie kann man eine kleine pause im Programm machen? Java Basics - Anfänger-Themen 13
J kleine java aufgabe: ausgabe von sternchen Java Basics - Anfänger-Themen 20
P kleine db-aufgabe läuft nur suboptimal Java Basics - Anfänger-Themen 8
S ein paar kleine Fragen Java Basics - Anfänger-Themen 4
G sehr kleine Dezimalzahlen (BigDecimal) falsch angezeigt Java Basics - Anfänger-Themen 5
G Eigene kleine Sprache entwickeln Java Basics - Anfänger-Themen 6
T Kleine Verständnissfrage Java Basics - Anfänger-Themen 7
J Große *.Text Datei zum verschicken in viele kleine Java Basics - Anfänger-Themen 7
B eine kleine leichte aufgabe mit einem stack programmieren Java Basics - Anfänger-Themen 2
A Kleine Anfängerfragen u.a.: Kann man Random "speichern& Java Basics - Anfänger-Themen 6
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben