从命令行获取参数

时间:2013-12-15 22:14:10

标签: java parsing command-line-arguments

我编写了以下内容,用于扫描几行代码作为字符串并将其解析为整数。但在我的main方法中,我使用p.letsReadIn来读入文件。有谁知道如何将此转换为使用命令行参数而不是接收文件?所以不要让用户改变p.letsReadIn(“ReadMuah.txt”);每次,他们只需使用命令行来读取文件。

public void letsReadIn(String filename) throws FileNotFoundException {
        int x;
        Scanner scan = new Scanner(new File(filename));

        StringTokenizer st;
        String nextLine = scan.nextLine();

        st = new StringTokenizer(nextLine);

        x = Integer.parseInt(st.nextToken());

        nextLine = scan.nextLine();

        st = new StringTokenizer(nextLine);

        y= Integer.parseInt(st.nextToken());

        nextLine = scan.nextLine();

        st = new StringTokenizer(nextLine);

        z= Integer.parseInt(st.nextToken());

        for (int i = 0; i < x; i++) {
            nextLine = scan.nextLine();
            st = new StringTokenizer(nextLine);
            listing.add(Integer.parseInt(st.nextToken()));
        }

        scan.close();
    }
    public static void main(String[] args) throws FileNotFoundException {

        BagItems p = new BagItems();
        p.letsReadIn("ReadMuah.txt");
        p.StartBagging();

    }

4 个答案:

答案 0 :(得分:2)

String[] args方法的main()参数是命令行参数。如果你把文件名放在命令行上,它就会在那个数组中。

答案 1 :(得分:1)

这取决于你的意思“使用命令行参数代替接收文件”

如果你的意思是从命令行中获取参数(字面意思),那么用Scanner上迭代的东西替换Scanner.parseIntString[]调用,并使用{{1}解析调用。但这会给你一个非用户友好的命令行语法,所以你可能想要添加一些“选项”或其他什么

如果您希望能够从命令行指定输入参数的来源,请尝试以下操作:

Integer.parseInt(String)

这个(或类似的东西)将允许您的应用程序从命名文件或标准输入读取输入。在后一种情况下,您可以像这样运行它(在Linux上)

InputStream in;
if (args.length > 0) {
    in = new FileInoputStream(args[0]);
} else {
    in = System.in;
} = System.in
....
Scanner scan = new Scanner(input);
// Read as before.

答案 2 :(得分:0)

您可以使用p.parser(args[0]);,当然您需要检查args是否包含某些字符串。即你已经通过了一个论证,只需要做if (args.length > 0)

答案 3 :(得分:0)

使用args []中的第一个元素代替代码中的硬编码文件名。

public static void main(String[] args) throws FileNotFoundException {
    BagItems p = new BagItems();
    if (args.length > 0)
    {
        p.parser(args[0]);
        p.StartBagging();
    }
    else
    {
        p.parser("hard-coded-file.txt");
        p.StartBagging();
    }
}

现在您可以将文件名作为命令行传递给程序,您的代码应该选择它。

请注意,java中的数组索引默认从0开始,因此,要访问数组的第一个元素(命令行参数数组),您应该使用[0]。

如需更多提示,请点击以下链接。

how to accept values using command line argument in java