Java:使用命令行参数处理文件名

Java:使用命令行参数处理文件名,java,command-line,textinput,Java,Command Line,Textinput,我正在编写一个程序,该程序将确定文本文件的行数、字符数和平均字长。对于该程序,规范规定该文件将作为命令行参数输入,并且我们应该为输入的每个文件创建一个TestStatistic对象。如果用户输入多个文件,我不知道如何编写代码来创建TestStatistic对象。处理命令行参数的最基本方法是: public class TestProgram { public static void main(final String[] args) { for (String s

我正在编写一个程序,该程序将确定文本文件的行数、字符数和平均字长。对于该程序,规范规定该文件将作为命令行参数输入,并且我们应该为输入的每个文件创建一个TestStatistic对象。如果用户输入多个文件,我不知道如何编写代码来创建TestStatistic对象。

处理命令行参数的最基本方法是:

public class TestProgram
{
    public static void main(final String[] args)
    {
        for (String s : args)
        {
            // do something with each arg
        }
        System.exit(0);
    }
}

更好的方法是使用一些为您管理命令行参数的工具。我建议。

处理命令行参数的最基本方法是:

public class TestProgram
{
    public static void main(final String[] args)
    {
        for (String s : args)
        {
            // do something with each arg
        }
        System.exit(0);
    }
}

更好的方法是使用一些为您管理命令行参数的工具。我建议。

听起来您只需要遍历命令行参数并为每个参数生成一个TestStatistic对象

e、 g


听起来您只需要遍历命令行参数并为每个参数生成一个TestStatistic对象

e、 g


您还可以使用类似于处理命令行的工具。

您也可以使用类似于处理命令行的工具。

这里是对其他一般答案的扩展,进一步进行了补充

public class TextFileProcessor
{
    private List testStatisticObjects = new ArrayList();

    private void addFile(String fileName)
    {
        testStatisticObjects.add(new TestStatistic(fileName));
    }

    public static void main(String[] args)
    {
        TextFileProcessor processor = new TextFileProcessor();
        for (String commandLineArgument : args)
        {
            //consider validating commandLineArgument here
            processor.addFile(commandLineArgument);
        }
        ...
    }
}

这里是对其他一般答案的扩展,更进一步

public class TextFileProcessor
{
    private List testStatisticObjects = new ArrayList();

    private void addFile(String fileName)
    {
        testStatisticObjects.add(new TestStatistic(fileName));
    }

    public static void main(String[] args)
    {
        TextFileProcessor processor = new TextFileProcessor();
        for (String commandLineArgument : args)
        {
            //consider validating commandLineArgument here
            processor.addFile(commandLineArgument);
        }
        ...
    }
}

这是一个糟糕的建议,Commons CLI是一个甚至没有维护且语义糟糕的糟糕库。这是一个糟糕的建议,Commons CLI是一个甚至没有维护且语义糟糕的糟糕库。您的代码看起来很奇怪,ts的作用域是错误的。如果你有收藏品或类似的东西,它会更清晰。这看起来有点混乱。你的代码看起来很奇怪,ts的作用域是错误的。如果你有收藏品或类似的东西,它会更清晰。这似乎有点令人困惑。您不需要(也不应该)使用System.exit来生存。让main方法返回就行了。explict比implict好,特别是对于初学者!它并没有比汇编更明确,所以也许他们应该从这里开始?我不同意,对初学者来说,抽象程度越高越好。显然,您在某种程度上同意,因为您建议使用for each构造,而不是更明确的for循环标准;这将与明确的制度背道而驰;如果参数有问题,我强烈建议使用JSAP而不是手动解析数组。您不需要(也不应该)使用System.exit来存在。让main方法返回就行了。explict比implict好,特别是对于初学者!它并没有比汇编更明确,所以也许他们应该从这里开始?我不同意,对初学者来说,抽象程度越高越好。显然,您在某种程度上同意,因为您建议使用for each构造,而不是更明确的for循环标准;这将与明确的制度背道而驰;如果参数有问题,我强烈建议使用JSAP,而不是手动解析数组。