Adressbuch

Toadtbrot

Neues Mitglied
Guten Tag erstmal an alle, ist ja das erste Mal hier für mich.

Seit diesem Schuljahr haben wir das Fach Informatik in der Schule und wir sind gerade dabei, die Grundlagen des Programmierens zu erlernen. (Hier: Programme mit Arrays)

Zuletzt haben wir die Aufgabe erhalten, ein Adressbuch mit Java zu programmieren, bei welchem man Name, Vorname, Straße, Hausnummer, Ort sowie Postleitzahl eingibt, das Programm diese Infos speichert und man diese erneut abrufen kann. (20 Adressbucheinträge möglich)
Dies kann mein Programm nun und es treten keine Fehler auf.

Jedoch ist es bei meinem Adressbuch nun so, dass man die Einträge nur mit der Nummer des Eintrages abrufen kann, sprich wenn ich 1 eingebe, bekomme ich auch den ersten Eintrag etc.
Gibt es auch eine Möglichkeit dies mit Hilfe des Nachnamen aufrufen kann? Also dass ich den Nachnamen eingebe, und ich daraufhin die anderen 5 Einträge erhalte? Ist dies schwer unzusetzen oder muss ich nur "relativ" wenig verändern?

Und die 2. Frage, die ich habe ist diese: Ich beispielsweise wohne in der Hausnummer 5a. Dies kann ich allerdings nicht eingeben, da int ja nur Zahlenwerte besitzt. Kann ich dieses Problem auch lösen?

Freue mich schon auf eure Hilfe.

LG

(Programm ist angehängt, falls ich alles richtig gemacht habe)
 

Anhänge

  • 15190708417431164137444.jpg
    15190708417431164137444.jpg
    2,7 MB · Aufrufe: 122
  • 1519070898436257990514.jpg
    1519070898436257990514.jpg
    2,6 MB · Aufrufe: 117
  • 15190709281751998559934.jpg
    15190709281751998559934.jpg
    2,6 MB · Aufrufe: 89

stg

Top Contributor
Gibt es auch eine Möglichkeit dies mit Hilfe des Nachnamen aufrufen kann? Also dass ich den Nachnamen eingebe, und ich daraufhin die anderen 5 Einträge erhalte? Ist dies schwer unzusetzen oder muss ich nur "relativ" wenig verändern?
Du suchst im Feld name in einer Schleife den entsprechenden Index, für den du eine Übereinstimmung hast und mit diesem Index verfährst du dann wie in case 1.

Und die 2. Frage, die ich habe ist diese: Ich beispielsweise wohne in der Hausnummer 5a. Dies kann ich allerdings nicht eingeben, da int ja nur Zahlenwerte besitzt. Kann ich dieses Problem auch lösen?

Indem du aus der Hausnummer einen String machst, oder ein weiteres Feld für einen solchen Address-Zusatz anlegst.
 

Toadtbrot

Neues Mitglied
Okay, das mit dem String erscheint mir logisch.
Aber zur ersten Antwort, wie genau meinst du das? Also dass ich im Feld "name" in einer Schleife den geeigneten Index suchen soll? Ich verstehe nicht ganz, was du meinst und wo ich jetzt etwas anpassen muss.
Wäre froh, wenn du mir das kurz genauer erklären könntest, auf jeden Fall schonmal ein Danke an dich für die schnelle Antwort.
 

stg

Top Contributor
Ich verstehe nicht ganz, was du meinst

So in etwa:
Java:
String [] array = { "a", "b", "c", "d", "e" };
int index = -1;
String searchValue = "b";
for(int i=0; i<array.length; i++) {
    if(searchValue.equals(array[i])) {
        index = i;
        break;
    }
}
if(index == -1) {
    System.out.println("Wert nicht gefunden.");
} else {
    System.out.println("Wert an Stelle " + index + " gefunden.");
    System.out.println("Gefundener Wert: " + array[index]);                             
}
 

MoxxiManagarm

Top Contributor
Noch kleine Hinweise von mir:
1. Es gibt Code-Tags mit denen du wie stq den Code formatiert einfügen kannst, bitte keine Screenshots.
2. Bitte schreibe den Klassen Namen groß!
3. Wenn möglich (ihr das bereits behandelt habt), dann füge doch bitte all diese Attribute in eine Klasse Adresse und behalte nur ein Adress-Array.
4. Ein Array beginnt bei 0 nicht bei 1. Du initialisierst i aber mit 1 und fängst daher an das Array ab 1 zu befüllen. Im Endeffekt kannst du nur 19 Adressen speichern.
5. Du verhinderst nicht, dass weitere Daten gespeichert werden sollen, wenn das Array bereits voll ist. Du würdest sicher auf eine ArrayIndexOutOfBoundException laufen, da i irgendwann größer ist als das Array.
6. Wenn du keinen Integer eingibst, wo einer erwartet wird, wirst du sicher auf eine NumberFormetExpection laufen. Das sollte theoretisch beachtet werden, aber das hattet ihr eventuell noch nicht.
 
Zuletzt bearbeitet:

JavaUndC-Prog

Bekanntes Mitglied
Vielleicht ist das ja auch noch interessant, eine Implementierung mit einer Liste:

Java:
package Fragen1;

import java.util.ArrayList;

public class Adressbuch {

    private String name;
    private String nachname;
    private String strasse;
    private int hausnummer;
    private int plz;
 
    public Adressbuch(String name, String nachname, String strasse, int hausnummer, int plz) {
        this.name = name;
        this.nachname = nachname;
        this.strasse = strasse;
        this.hausnummer = hausnummer;
        this.plz = plz;
    }
 
    public void gebeEintragAus() {
        System.out.println("Name: " + name + " Nachname: " + nachname + " Strasse: " + strasse + " Hausnummer: " + hausnummer + " PLZ: " + plz);
    }
 
    public String getName() {
        return name;
    }



    public void setName(String name) {
        this.name = name;
    }



    public String getNachname() {
        return nachname;
    }



    public void setNachname(String nachname) {
        this.nachname = nachname;
    }



    public String getStrasse() {
        return strasse;
    }



    public void setStrasse(String strasse) {
        this.strasse = strasse;
    }



    public int getHausnummer() {
        return hausnummer;
    }



    public void setHausnummer(int hausnummer) {
        this.hausnummer = hausnummer;
    }



    public int getPlz() {
        return plz;
    }



    public void setPlz(int plz) {
        this.plz = plz;
    }



    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<Adressbuch> liste = new ArrayList<>();
        Adressbuch peter = new Adressbuch("Peter","Müller","Str1",2,4);
        Adressbuch martin = new Adressbuch("Martin","Müller","Berliner Str",22,4434);
        Adressbuch beate = new Adressbuch("Beate","Müller","Berliner Str",22,4434);
        liste.add(martin);
        liste.add(peter);
        liste.add(beate);
     
        for(int i = 0; i < liste.size(); i++) {
            if("Peter" == liste.get(i).getName()) {
                System.out.println("Peter gefunden");
                liste.get(i).gebeEintragAus();
            }
         
            if("Beate" == liste.get(i).getName()) {
                System.out.println("Beate gefunden");
                liste.get(i).gebeEintragAus();
            }
        }
         
        /*
         *     Ausgabe:
         *     Peter gefunden
            Name: Peter Nachname: Müller Strasse: Str1 Hausnummer: 2 PLZ: 4
            Beate gefunden
            Name: Beate Nachname: Müller Strasse: Berliner Str Hausnummer: 22 PLZ: 4434
         */
    }

}
 

MiMij

Bekanntes Mitglied
Es ist nicht besser (weil besser wäre ja eine Alternative), aber mit == kannst du Strings nicht vergleichen, jedenfalls nicht den Inhalt.

Ebenso würd ichs umdrehen, so umgeht man mögliche Nullpointer
Java:
"Beate".equals(liste.get(i).getName())

Wobei liste.get(i) immer noch null liefern könnte und somit einen Nullpointer ^^
 

mrBrown

Super-Moderator
Mitarbeiter
Ebenso würd ichs umdrehen, so umgeht man mögliche Nullpointer
Java:
"Beate".equals(liste.get(i).getName())

Wobei liste.get(i) immer noch null liefern könnte und somit einen Nullpointer ^^

Die meisten werden lieber auf Fehler aufmerksam gemacht, als sie zu verschleiern (schönes Wort dafür) ;)
Wenn da eines der Dinge null wäre, läge ein ziemlicher Fehler vor, der schon lange vorher abgefangen gehört...

Und wer nicht immer wie Yoda spricht, sollte auch nicht in einzelne if's damit anfangen :p
 

Ähnliche Java Themen

Neue Themen


Oben