Hallo,
ich habe bald eine Prüfung und es wurde angedeutet, dass beim Programmstart Parameter zu übergeben sind und diese auch ordentlich weiterverarbeitet werden sollen.
Grundsätzlich wird verlangt, ein Programm zu schreiben, dass Dateien einliest (xml/html/csv oÄ), verarbeitet (sortieren/filtern), und dannach ausgibt (xml/html/csv).
Im Terminal wird dann ein Befehl mindestens so aussehen:
Möchte man zB (angenommen wir haben eine Musikdatenbank) nach Genre sortieren:
Oder zB per Erscheinungsjahr:
Falscheingaben müssen abgefangen werden, dH dem User soll die möglichkeit gegeben werden etwaige Falscheingaben (zB --gnre statt --genre) auszubessern, ohne, dass man das Programm neu im Terminal starten muss.
Auch die Reihenfolge der Args soll dem User beliebig überlassen werden, also zB auch:
Ich bin kein totaler Anfänger mehr, aber ich komm da irgendwie nicht auf eine anständige Lösung.
...wenn ich nun ne zB xml mit 10 verschiedenen Elementen habe, wird der Code so erstens unsauber und zweitens bin ich mir sicher, dass es dafür einen vernünftigen Weg geben muss. Kann man da mit switch/case inkl enums oder ner HashMap was machen? ...wenn ja, wie würdet ihr an die Sache rangehen?
Mir muss hier selbstverständlich niemand etwas vorprogrammieren, ich wäre schon sehr dankbar wenn ihr den Weg beschreiben würdet, den ihr da gehen würdet.
Danke im Vorraus.
LG
CodePanda
ich habe bald eine Prüfung und es wurde angedeutet, dass beim Programmstart Parameter zu übergeben sind und diese auch ordentlich weiterverarbeitet werden sollen.
Grundsätzlich wird verlangt, ein Programm zu schreiben, dass Dateien einliest (xml/html/csv oÄ), verarbeitet (sortieren/filtern), und dannach ausgibt (xml/html/csv).
Im Terminal wird dann ein Befehl mindestens so aussehen:
Bash:
java -jar MeinProgramm.jar --input=C:\Pfad\zum\InputFile.csv --output=C:\Prad\zum\OutputFile.html
Möchte man zB (angenommen wir haben eine Musikdatenbank) nach Genre sortieren:
Bash:
java -jar MeinProgramm.jar --input=C:\Pfad\zum\InputFile.csv --output=C:\Prad\zum\OutputFile.html --genre=Rock
Oder zB per Erscheinungsjahr:
Bash:
java -jar MeinProgramm.jar --input=C:\Pfad\zum\InputFile.csv --output=C:\Prad\zum\OutputFile.html --yearFrom=1980 --yearTo=2000
Falscheingaben müssen abgefangen werden, dH dem User soll die möglichkeit gegeben werden etwaige Falscheingaben (zB --gnre statt --genre) auszubessern, ohne, dass man das Programm neu im Terminal starten muss.
Auch die Reihenfolge der Args soll dem User beliebig überlassen werden, also zB auch:
Bash:
java -jar MeinProgramm.jar --genre=Rock --input=C:\Pfad\zum\InputFile.csv --yearFrom=1980 --output=C:\Prad\zum\OutputFile.html --yearTo=2000
Ich bin kein totaler Anfänger mehr, aber ich komm da irgendwie nicht auf eine anständige Lösung.
Java:
public static void main(String[] args) {
final String inputFlag = "--input";
final String outputFlag = "--output";
String inputFileLocation = null;
String outputFileLocation = null;
if (args.length >= 1) {
for (String arg : args) {
String[] test1 = arg.split("=");
if (test1[0].equals(inputFlag)) {
inputFileLocation = test1[1];
System.out.println("Input: " + test1[1]);
}
if (test1[0].equals(outputFlag)) {
outputFileLocation = test1[1];
System.out.println("Output: " + test1[1]);
}
}
}
...wenn ich nun ne zB xml mit 10 verschiedenen Elementen habe, wird der Code so erstens unsauber und zweitens bin ich mir sicher, dass es dafür einen vernünftigen Weg geben muss. Kann man da mit switch/case inkl enums oder ner HashMap was machen? ...wenn ja, wie würdet ihr an die Sache rangehen?
Mir muss hier selbstverständlich niemand etwas vorprogrammieren, ich wäre schon sehr dankbar wenn ihr den Weg beschreiben würdet, den ihr da gehen würdet.
Danke im Vorraus.
LG
CodePanda
Zuletzt bearbeitet von einem Moderator: