Hallo Zusammen
Ich habe hier ein Programm, dass nicht so ganz richtig funktioniert. Ich kann den Fehler aber leider nicht finden. Kann mir vielleicht jemand weiterhelfen?
Ich denke, es liegt an dieser Zeile:
Aber wenn ich sie umschreiben will, meckert Eclipse
Der Konstruktor sieht so aus:
Ich bekomme dann folgende Ausgabe
Es sollte aber folgendermassen sein
Der komplette Quellcode dazu sieht so aus
Ich habe hier ein Programm, dass nicht so ganz richtig funktioniert. Ich kann den Fehler aber leider nicht finden. Kann mir vielleicht jemand weiterhelfen?
Ich denke, es liegt an dieser Zeile:
Java:
Kontakt kontakt = new Kontakt(null, typ, typ, typ, typ, typ, typ);
Aber wenn ich sie umschreiben will, meckert Eclipse
Der Konstruktor sieht so aus:
Java:
public Kontakt(KontaktTyp pTyp, String pNachname, String pVorname,
String pStrasse, String pPlz, String pOrt, String pLand) {
this(null, pTyp, pNachname, pVorname, pStrasse, pPlz, pOrt, pLand);
}
Ich bekomme dann folgende Ausgabe
Adressdaten für Max Mustermann gefunden!
Der Kontakt ist an null. Stelle
Der Kontakt ist null
Strasse: Musterstrasse
PLZ: privat
Ort: Musterstadt
Land: Musterland
Es sollte aber folgendermassen sein
Adressdaten für Max Mustermann gefunden!
Der Kontakt ist an 2,. Stelle
Der Kontakt ist privat
Strasse: Musterstrasse
PLZ: 12345
Ort: Musterstadt
Land: Musterland
Der komplette Quellcode dazu sieht so aus
Java:
public class MeinAdressbuch {
public static enum KontaktTyp {
privat, geschaeftlich
}
//die gespeicherte XML Datei
private static String XMLDateiName;
private static ArrayList<Kontakt> kontakte = new ArrayList<Kontakt>();
/**
* Konstruktor
* @param dataFileName
* Name der XML-Datei, die die AdressDaten enthält
* @throws ParserConfigurationException
* @throws IOException
* @throws SAXException
*/
MeinAdressbuch(String dataFileName) throws ParserConfigurationException, SAXException, IOException {
XMLDateiName = dataFileName;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
//Übergebene XML-Datei parsen
Document dokument = builder.parse(new File(XMLDateiName));
//DOM Baum durchlaufen und ausgeben
traversieren(dokument.getDocumentElement(), "");
}
private static void traversieren(Element e, String ebene) {
if (e.getNodeName().equals("Kontakt")) {
String typ = e.getAttribute("typ");
KontaktTyp kontaktTyp = KontaktTyp.privat;
if (typ.equals("geschaeftlich")) {
kontaktTyp = KontaktTyp.geschaeftlich;
}
Kontakt kontakt = new Kontakt(null, typ, typ, typ, typ, typ, typ);
kontakte.add(kontakt);
}
// Kindelemente des uebergebenen Elements ermitteln
NodeList children = e.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Node knoten = children.item(i);
// Knoten ist ein ELEMENT_NODE
if (knoten.getNodeType() == Node.ELEMENT_NODE) {
traversieren((Element) knoten, ebene + " ");
// Knoten ist ein TEXT_NODE
} else if (knoten.getNodeType() == Node.TEXT_NODE) {
String inhalt = knoten.getTextContent();
if (kontakte.size() > 0) {
Kontakt kontakt = kontakte.get(kontakte.size()-1);
if (inhalt.trim().length() > 0) {
if (e.getNodeName().equals("Vorname")) {
kontakt.setVorname(inhalt);
}
if (e.getNodeName().equals("Nachname")) {
kontakt.setNachname(inhalt);
}
if (e.getNodeName().equals("Strasse")) {
kontakt.setStrasse(inhalt);
}
if (e.getNodeName().equals("Plz")) {
kontakt.setPlz(inhalt);
}
if (e.getNodeName().equals("Ort")) {
kontakt.setOrt(inhalt);
}
if (e.getNodeName().equals("Land")) {
kontakt.setLand(inhalt);
}
}
}
}
}
}
public ArrayList<String> getAlleNamen() {
ArrayList<String> namen = new ArrayList<String>();
for (int i=0; i<kontakte.size(); i++) {
Kontakt kontakt = kontakte.get(i);
String vorname = kontakt.getVorname();
String nachname = kontakt.getNachname();
String nameKomplett = vorname + " " + nachname;
namen.add(nameKomplett);
}
return namen;
}
public ArrayList<Kontakt> getAdressenDaten(String vorname, String nachname) {
ArrayList<Kontakt> gefundeneKontakte = new ArrayList<Kontakt>();
for (int i=0; i<kontakte.size(); i++) {
Kontakt kontakt = kontakte.get(i);
if (kontakt.getVorname().equals(vorname) || kontakt.getNachname().equals(nachname)) {
gefundeneKontakte.add(kontakt);
}
}
return gefundeneKontakte;
}
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException{
MeinAdressbuch meinAdressbuch = new MeinAdressbuch("adressen2.xml");
System.out.println(meinAdressbuch.getAlleNamen());
// Sucht nach Kontaktdaten für Max Mustermann
ArrayList<Kontakt> kontakte = meinAdressbuch.getAdressenDaten("Max", "Mustermann");
for(int i=0; i<kontakte.size(); i++) {
Kontakt kontakt = kontakte.get(i);
System.out.println("Adressdaten für " + kontakt.getVorname() + " " + kontakt.getNachname() + " gefunden!");
System.out.println("Der Kontakt ist an " + kontakt.getId() + ". Stelle");
System.out.println("Der Kontakt ist " + kontakt.getTyp());
System.out.println("Strasse: " + kontakt.getStrasse());
System.out.println("PLZ: " + kontakt.getPlz());
System.out.println("Ort: " + kontakt.getOrt());
System.out.println("Land: " + kontakt.getLand());
}
}
}