wie kommt es zu den ** im Quellcode? habe ich sonst noch nirgendwo gesehen, ist für Java-Code wohl nicht üblich,
edit: ok, von Moderator
der Code dürfe auch sonst mit public enum Param{Argumente,...};
nicht vollständig sein
schließlich, soweit ich args4j noch nie gehört habe, wage ich noch einen fachlichen Punkt:
bist du dir mit @Option an set-Methoden sicher?
soweit ich bisher wenige Beispiele überhaupt im gesamten Universum gefunden habe, noch weniger mit Enum, sehen die alle anders aus https://searchcode.com/codesearch/view/20768928/
das @Option kommt an ein Attribut, keine set-Methode?
ist natürlich oft beides interessant, vielleicht geht das, aber im Zweifel erstmal nach Tutorials?
funktioniert eigentlich schon anderes, simpler String statt Enum?
gibt es Fehlermeldungen? ( -> schon wieder so ein Punkt der gleich in das erste Posting gehört…)
Ich würde dir ja gerne helfen, aber dein Ausschnitt enthält leider nicht alle relevanten Dinge. Evtl. schreibst du mal einen kompletten beispielhaften Aufruf deines Programmes und welche Variable anschließend welchen Wert haben soll.
Ggf. hilft dir auch schon folgendes Kleines Beispiel:
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
public class ByteWelt12566 {
public static class ArgumentOptions {
public static enum Param {
Foo, Bar
}
@Option(name = "-Argument:Param")
public Param param;
@Option(name = "-Argument:ID")
public Integer customerId;
}
public static void main(String[] args) throws CmdLineException {
System.out.println(Arrays.toString(args));
final ArgumentOptions options = new ArgumentOptions();
new CmdLineParser(options).parseArgument(args);
System.out.println("options.param=" + options.param);
System.out.println("options.customerId=" + options.customerId);
}
}```
Pattern p = Pattern.compile("^-?(richtiger):(Ausdruck\\Regex)$");
ArrayList aloa = new ArrayList(args.length);
for(String s : args) {
Matcher m = p.matcher(s);
if (m.find()) {
aloa.add...
} else {
sout("Not m.find() :-( : " + m.group(0));
}
}
// do what with mea, aloa
} // EOF of main```
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package pkg23args;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author CB
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String... args) {
// TODO code application logic here
int len = 16;
while (len < 2 * args.length) {
len <<= 1;
}
Pattern p = Pattern.compile("^-?(\\d+):(.+)$");
List<Object[]> aloa = new ArrayList<Object[]>(len);
for (String string : args) {
Matcher m = p.matcher(string);
if (m.find()) {
aloa.add(new Object[]{Integer.parseInt(m.group(1)), m.group(2)});
} else {
System.out.println("Not m.find() : " + string);
}
}
Random r = new Random();
while (!aloa.isEmpty()) {
Object[] oa = aloa.remove(r.nextInt(aloa.size()));
if (r.nextBoolean()) {
System.out.println(Arrays.toString(oa));
} else {
System.out.println(new StringBuilder(Arrays.toString(oa)).reverse().toString());
}
}
}
}```
(Umgang mit Strings/Zeichenketten)
Zeile 24 bis 27 und 38 bis 46 nicht wichtig. In 33 könnte eine NFE auftreten, wenn string/lin zu lang ist.
Grüße