Hallo zusammen,
ich versuche eine Methode mit regularen Ausdrücken zu schreiben, aber sie funktioniert nicht.
static Medium readMedium(String line) Liest aus einem einzeiligen String
* ein neues Medium ein und gibt dies zurueck. In diesem String sind jeweils
* durch Komma getrennt folgenden Informationen enthalten: Der erste Eintrag
* gibt stets den Typ des Mediums an, also "CD", "DVD" oder "Buch". Der
* zweite Eintrag gibt stets die Registriernummer an, der dritte den Titel,
* der vierte die Information, ob das Medium ausleihbar ist ("true" oder
* "false"). Bei einem Buch folgen anschlieueend ISBN-Nummer, Autor und
* Mindestalter, bei einer CD oder DVD die Abspieldauer und das
* Mindestalter. Ist der uebergebene String nicht diesen Anforderungen
* entsprechend formattiert oder enthuelt er weitere durch Komma separierte
* Elemente, so ist eine IllegalArgumenException zu werfen. Ein korrekter
* String kann zum Beispiel wie folgt aussehen: Buch,104,Terry
* Schotter,true,ISBN:12345,A. Rollin,12 oder: CD,101,Musik der
* Stille,true,34,6
Danke fuer eure Hilfe:rtfm:
ich versuche eine Methode mit regularen Ausdrücken zu schreiben, aber sie funktioniert nicht.
static Medium readMedium(String line) Liest aus einem einzeiligen String
* ein neues Medium ein und gibt dies zurueck. In diesem String sind jeweils
* durch Komma getrennt folgenden Informationen enthalten: Der erste Eintrag
* gibt stets den Typ des Mediums an, also "CD", "DVD" oder "Buch". Der
* zweite Eintrag gibt stets die Registriernummer an, der dritte den Titel,
* der vierte die Information, ob das Medium ausleihbar ist ("true" oder
* "false"). Bei einem Buch folgen anschlieueend ISBN-Nummer, Autor und
* Mindestalter, bei einer CD oder DVD die Abspieldauer und das
* Mindestalter. Ist der uebergebene String nicht diesen Anforderungen
* entsprechend formattiert oder enthuelt er weitere durch Komma separierte
* Elemente, so ist eine IllegalArgumenException zu werfen. Ein korrekter
* String kann zum Beispiel wie folgt aussehen: Buch,104,Terry
* Schotter,true,ISBN:12345,A. Rollin,12 oder: CD,101,Musik der
* Stille,true,34,6
Java:
public static Medium readMedium(String line) {
if (line == null) {
throw new NullPointerException();
}
Medium res = null;
String[] temp = line.split(Character.toString(','));
String rBuch = "(Buch),([0-9]+),([A-Za-z ]+),(true|false),"
+ "([A-Z:0-9]+),([A-Za-z. ]+),([0-9]+)";
String rMed = "(CD|DVD),([0-9]+),([A-Za-z ]+),(true|false),([0-9]+),"
+ "([0-9]+)";
if (!Pattern.matches(rBuch, line) || !Pattern.matches(rMed, line)) {
System.out.println("Here is something wrong. Cant read the file");
}
if (Pattern.matches(rBuch, line)) {
int registernummer = Integer.parseInt(temp[1]);
int mindestalter = Integer.parseInt(temp[6]);
boolean ausleihbar = Boolean.getBoolean(temp[3]);
res = new Buch(registernummer, temp[2], ausleihbar, temp[4],
temp[5], mindestalter);
} else if (Pattern.matches(rMed, line)) {
int registernummer = Integer.parseInt(temp[1]);
int mindestalter = Integer.parseInt(temp[5]);
boolean ausleihbar = Boolean.getBoolean(temp[3]);
int abspieldauer = Integer.parseInt(temp[4]);
res = temp[0].equals("CD") ? new CD(registernummer, temp[2],
ausleihbar, abspieldauer, mindestalter) : new DVD(
registernummer, temp[2], ausleihbar, abspieldauer,
mindestalter);
} else {
throw new IllegalArgumentException("Invalid Line!!!");
}
return res;
}
public static void main(String[] args) {
readMedium("Buch,104,TerrySchotter,true,ISBN:12345,A. Rollin,12");
readMedium("CD,101,Thriller,false,34,6");
}
Danke fuer eure Hilfe:rtfm:
Zuletzt bearbeitet: