Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中具有特定格式变量名的命令行参数_Java_Command Line Interface - Fatal编程技术网

java中具有特定格式变量名的命令行参数

java中具有特定格式变量名的命令行参数,java,command-line-interface,Java,Command Line Interface,我正在尝试以的格式为类获取CLI java演示——20岁——命名Amr——技术学院——课程CS 我如何做到这一点 我看到了其中一个解决方案,并尝试了一下 Map argsMap=newlinkedhashmap(); for(字符串arg:args){ 字符串[]部分=arg.split(“”); argsMap.put(第[0]部分、第[1]部分); } argsMap.entrySet().forEach(arg->{ System.out.println(arg.getKey().rep

我正在尝试以的格式为类获取CLI

java演示——20岁——命名Amr——技术学院——课程CS

我如何做到这一点

我看到了其中一个解决方案,并尝试了一下


Map argsMap=newlinkedhashmap();
for(字符串arg:args){
字符串[]部分=arg.split(“”);
argsMap.put(第[0]部分、第[1]部分);
}
argsMap.entrySet().forEach(arg->{
System.out.println(arg.getKey().replace(“-”,”)+“=”+arg.getValue());
});
但是上面代码的输入格式类似于
javacdemo--age=20--name=Amar school=AOT course=CS

我希望我的i/p格式是这样的
java演示——20岁——命名Amr——技术学院——课程CS

因此,我将“=”替换为“”,并将数组设置为超出范围。 我在想regex会不会是个好办法


该代码始终需要4个输入。

如果键和值对仅以空格分隔,则以下代码将起作用

public static void main(String[] args) {

    Map<String, String> argMap = new LinkedHashMap<>();

    for(int ind=0; ind<args.length; ind+=2) {
        argMap.put(args[ind], args[ind+1]);
    }

    for(Map.Entry<String, String> entrySet: argMap.entrySet()) {
        String property = entrySet.getKey().substring(2);
        String value = entrySet.getValue();
        System.out.println("key = " + property + ", value = " + value);
    }

}
publicstaticvoidmain(字符串[]args){
Map argMap=新建LinkedHashMap();

对于(int ind=0;在您的第一个CLI示例中,您同时使用了两种语法:一种是按空格分隔键和值,另一种是使用
=
分隔键和值。我怀疑这是一种拼写错误。或者您真的想用两种方式工作?我引用的代码也使用
=
的输入格式,我希望使用空格,而不是
java demo--20岁——命名为Amar
您将无法进行拆分(“=”)。每个参数都将是“args”中的一个标记。您是否考虑过使用库?@matt根据您的评论进行编辑。我的目的是检查属性中的用户键是否没有相应的值,这将导致ArrayIndexOutOfBoundsException。我将其留给Abal。这是有意义的,但您对循环和r检查。我想您希望第二个条件将'ind+1'与长度进行比较。
public static void main(String[] args) {

    Map<String, String> argMap = new LinkedHashMap<>();

    for(int ind=0; ind<args.length; ind+=2) {
        argMap.put(args[ind], args[ind+1]);
    }

    for(Map.Entry<String, String> entrySet: argMap.entrySet()) {
        String property = entrySet.getKey().substring(2);
        String value = entrySet.getValue();
        System.out.println("key = " + property + ", value = " + value);
    }

}