G
Gelöschtes Mitglied 32532
Gast
Hallo,
ich wollte einen Kontaktmanager in Java schreiben und bin soweit gekommen, dass Daten aus einer .txt eingelesen (dort stehen Kontaktdaten in der Form "'Vorname' 'Nachname' 'Telefonnummer'") und in Objekte der Klasse "Contact" übertragen werden.
Ich kenne mich mit Java nicht sonderlich aus und wollte bevor ich weitermachen nun erstmal fragen, was ihr an dem Kode verbessern würdet in Bezug auf Übersichtlichkeit, was vereinfacht geschrieben werden kann usw.
Ich bin mir z.B. unsicher ob die geschweiften Klammern direkt nach "if" oder Klassennamen oder in die darunter liegende Zeilen sollten.
Auch weiß ich nicht ob Zeile 75-82 so ok sind - sollte das ganze in den try-Block? Denn so flöge ja sowohl eine NullPointerException wenn die Daten nicht richtig in der .txt-Datei stehen und versucht wird die Kontakte auszugeben als auch eine "nicht richtig formatiert"-Exception. Andererseits soll doch so wenig wie möglich in den try-Block, oder?
ich wollte einen Kontaktmanager in Java schreiben und bin soweit gekommen, dass Daten aus einer .txt eingelesen (dort stehen Kontaktdaten in der Form "'Vorname' 'Nachname' 'Telefonnummer'") und in Objekte der Klasse "Contact" übertragen werden.
Ich kenne mich mit Java nicht sonderlich aus und wollte bevor ich weitermachen nun erstmal fragen, was ihr an dem Kode verbessern würdet in Bezug auf Übersichtlichkeit, was vereinfacht geschrieben werden kann usw.
Java:
public class Contact {
private String forename;
private String surname;
private int phoneNumber;
public Contact(String forename, String surname, int phoneNumber) {
this.forename = forename;
this.surname = surname;
this.phoneNumber = phoneNumber;
}
public String getForename() {
return forename;
}
public String getSurname() {
return surname;
}
public int getPhoneNumber() {
return phoneNumber;
}
Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ContactManager {
static final String path = "data.txt";
static final String REGEX = "^[a-zA-Z]+ [a-zA-Z]+ \\d*$";
public static boolean dataIsWellFormed(final LinkedList<String> data) {
boolean isWellFormed = true;
Pattern pattern = Pattern.compile(REGEX);
for (String dat : data) {
Matcher matcher = pattern.matcher(dat);
if (!matcher.find()) {
isWellFormed = false;
break;
}
}
return isWellFormed;
}
public static LinkedList<Contact> loadContacts(final String fileName) throws Exception {
LinkedList<String> data = new LinkedList<String>();
File file = new File(fileName);
if (!file.exists())
{
try { file.createNewFile(); }
catch (IOException e) { e.printStackTrace(); }
}
if (!file.isFile()) throw new Exception("Der angegebene Pfad ist keine Datei");
if (!file.canRead()) throw new Exception("Die angegebene Datei kann nicht gelesen werden");
try { BufferedReader in = new BufferedReader(new FileReader(file));
String zeile = null;
while ((zeile = in.readLine()) != null) data.add(zeile); }
catch (IOException e) { e.printStackTrace(); }
if (!dataIsWellFormed(data)) throw new Exception("Data is not well-formed.");
else return initializeContacts(data);
}
public static LinkedList<Contact> initializeContacts(final LinkedList<String> data) {
LinkedList<Contact> contacts = new LinkedList<Contact>();
for (String dat : data) {
String[] help = dat.split(" ");
String forename = help[0];
String surname = help[1];
String telephoneNumber = help[2];
contacts.add(new Contact(forename, surname, Integer.parseInt(telephoneNumber)));
}
return contacts;
}
public static void main(String[] args)
{
LinkedList<Contact> data = null;
try { data = loadContacts(path); }
catch (Exception e) { e.printStackTrace(); }
for (Contact c : data) {
System.out.println(c.getForename() + " " + c.getSurname() + " " + c.getPhoneNumber());
}
}
}
Ich bin mir z.B. unsicher ob die geschweiften Klammern direkt nach "if" oder Klassennamen oder in die darunter liegende Zeilen sollten.
Auch weiß ich nicht ob Zeile 75-82 so ok sind - sollte das ganze in den try-Block? Denn so flöge ja sowohl eine NullPointerException wenn die Daten nicht richtig in der .txt-Datei stehen und versucht wird die Kontakte auszugeben als auch eine "nicht richtig formatiert"-Exception. Andererseits soll doch so wenig wie möglich in den try-Block, oder?
Zuletzt bearbeitet von einem Moderator: