Java 当作为参数而不是类路径和目录传递时,如何使双引号(“*”)中的星号存储为字符串?

Java 当作为参数而不是类路径和目录传递时,如何使双引号(“*”)中的星号存储为字符串?,java,string,arguments,wildcard,Java,String,Arguments,Wildcard,当我通过时:“*”3 5 我希望“*”存储在argv[0]中,3存储在argv[1]中,5存储在argv[2]中 但相反,它将存储 .classpath、.project、.settings、bin、src、3、5 使argv.length==7而不是3 我知道问题发生在参数输入处。我可以通过让用户格式化参数输入来解决这个问题,但这还不够,因为输入的格式是双引号中的星号。我可以用单引号传递星号,但问题是当用双引号传递星号时(使用Eclipse>>运行配置>>参数>>“*”3)”*“将在目录中传递

当我通过时:“*”3 5 我希望“*”存储在argv[0]中,3存储在argv[1]中,5存储在argv[2]中

但相反,它将存储 .classpath、.project、.settings、bin、src、3、5 使argv.length==7而不是3


我知道问题发生在参数输入处。我可以通过让用户格式化参数输入来解决这个问题,但这还不够,因为输入的格式是双引号中的星号。我可以用单引号传递星号,但问题是当用双引号传递星号时(使用Eclipse>>运行配置>>参数>>“*”3)”*“将在目录中传递,而不是用双引号传递字符串星号

如何将双引号中的星号作为字符串读入?我知道这是可以做到的,我只是想弄清楚为什么它会被作为目录读取。按照任何其他示例,双引号应该可以解决问题,但在本例中并非如此

/**
 * Drives the program.
 * @param argv arguments from command line
 */
public static void main(final String[] argv) {
    final TableType type;
    final int       start;
    final int       stop;
    for(int i=0; i<argv.length; i++){
        System.out.println(argv[i]);
    }

    if (argv.length != 3) {
        usage();
    }
    System.out.println(argv[0]);
    type  = getType(argv[0]);
    start = getNumber(argv[1]);
    stop  = getNumber(argv[2]);

    displayTable(type, start, stop);
}

/**
 * Returns the TableType represented by the specified String.
 * @param str the table type
 * @return TableType
 */
public static TableType getType(final String str) {
    final TableType type;
    if (str.equals("+")) {
        type = TableType.ADD;
    } else if (str.equals("\"*\"")) {
        type = TableType.MULT;
    } else {
        usage();
        type = null;
    }
    return (type);
}
/**
*驱动程序。
*来自命令行的@param argv参数
*/
公共静态void main(最终字符串[]argv){
最终表格类型;
最后整型启动;
最后一站;

对于(int i=0;我能告诉我们您的命令行以及:您使用的是哪个操作系统/shell吗?“我可以通过让用户格式化参数输入来解决这个问题,但这是不合理的”-这怎么不合理?如果您希望用户提供命令行参数,他们必须以正确的格式、正确的转义和所有形式提供它们。通过“传入”我想您谈论的是命令行参数。在这种情况下,这实际上不是一个Java问题,而是启动
Java
的shell的行为问题。可能引用星号将解决该问题。您的shell将替换为工作目录中的目录和文件。可能你能给我们看一下你的命令行吗?还有:你在使用哪个操作系统/shell?“我可以通过让用户格式化参数输入来解决这个问题,但这是不合理的”-这怎么不合理?如果您希望用户提供命令行参数,他们必须以正确的格式、正确的转义和所有形式提供它们。通过“传入”我想您谈论的是命令行参数。在这种情况下,这实际上不是一个Java问题,而是启动
Java
的shell的行为问题。可能引用星号将解决该问题。您的shell将替换为工作目录中的目录和文件。可能副本