Re-JeePMedlem sedan sep. 200642 inlägg Hej!
Jag tänkte göra ett program där jag använder flaggor.
t.ex vill jag kunna skriva java program -d /directory -r (recursivly).
Jag vill bara veta hur man löser det på ett snyggt sätt.
Jag kan ju rada upp en massa if satser osv... men det vill jag helst slippa.
Jag vill inte att ordningen på flaggorna ska spela någon roll.
Mvh // Johan
spangoMedlem sedan juni 20008 205 inlägg Gör en for-loop som snurrar igenom den String[] som skickas in till main.
File directory = null;
boolean recurse = false;
for (int i = 0; i < args.length; ++i) {
if (args[i].equals("-d")) {
if (++i < args.length) directory = new File(args[i]);
} else if (args[i].equals("-r")) {
recurse = true;
}
}
Det är inte övermåttan vackert, men det funkar fint.
LimeMedlem sedan sep. 2001961 inlägg Vill man göra det snyggt så skapar man ett interface CMDFlagOperations som har en metod parse(String [] args, int index) och en metod execute(). Varje klass som implementerar CMDFlagOperations skall ha en egen nyckel som är samma som flaggan man vill att den skall använda sig av.
Parse används för att söka igenom arrayen dels för att få fram nästa token (som alltså är input till operationen) samt eventuellt kolla om andra flaggor som också krävs är definierade.
T.ex. så skulle RecurseCMDFlagOperation ha key="r" och i parsefunktionen skulle den kolla efter flaggan -d och låta DirectoryCMDFlagOperation ta hand om den.
Sedan får man då köra execute på både DirectoryCMDFlagOperation och RecurseCMDFlagOperation.
Alla operationer bör skapas i en Factory till vilken man skickar ett token varje gång man hittar ett minustecken i argumentet.