通过使用可选的命令行参数意味着什么

时间:2015-12-08 19:14:57

标签: java arrays eclipse

通过使用可选的命令行参数意味着什么?以及该段的其余部分。

当我启动时,程序采用可选的命令行参数,该参数是文件的名称。该文件的内容是人名的列表,每行一个。程序将读取这些名称并将它们存储在一个数组中。如果没有给出命令行参数,程序将只创建一个空数组,用于存储名称。

struct

2 个答案:

答案 0 :(得分:2)

主要方法的签名通常为public static void main(String[] args)。这里String[] args是您的命令行参数。传递给程序的所有命令行参数都将存储在args数组中。

所以,假设你运行"排序"程序为java Sort friends.txt然后在这里" friends.txt"是您将调用的第一个命令行参数,args[0]的值将为friends.txt

现在假设您运行"排序"程序为java Sort然后将其称为调用程序,无命令行参数args[0]的值为null

强制命令行参数

如果您有以下代码,那么可以说命令行参数是必需的,因为如果没有提供命令行参数,您不想继续。

public static void main(String[] args) throws IOException {
    if(args[0] == null){
        System.exit(0);
    }
}

可选的命令行参数

现在,请考虑以下代码。这里正在进行代码执行,即使没有命令行参数也不会退出,或者换句话说,即使没有提供任何命令行参数,程序仍然可以处理/执行某些操作,因此它意味着命令行参数是可选的。 如果您的代码不依赖于要传递的命令行参数,即使没有它也会运行,那么这意味着您的命令行参数是可选的。

public static void main(String[] args) throws IOException {
    if(args[0] != null){
        //do something with args[0]
    }
    // Do rest of the things...
}

您的案例如下所示:

public static void main(String[] args) throws IOException {
    ArrayList<String> personNames = new ArrayList<String>(); //It cannot be Array because size cannot be known until file is read.
    if(args[0] != null){
        //read file.
        //update personNames arraylist
        //convert to array, if it is really required
    } else{
        //this makes command line argument as optional, simply convert to array if really required and it would be of size 0.
    }
    // Do rest of the things...
}

<小时/>

进一步阅读:

答案 1 :(得分:0)

命令行参数在运行时可以传递给您的程序。参数作为字符串数组传递给main方法(这是&#39; String [] args&#39;在main方法中的用法!)例如:

  

用户在调用应用程序时输入命令行参数,并在要运行的类的名称后指定它们。例如,假设一个名为Sort的Java应用程序对文件中的行进行排序。要对名为friends.txt的文件中的数据进行排序,用户将输入:

 java Sort friends.txt

这将运行&#39;排序&#39;应用并传入字符串数组&#39; {&#39; friends.txt&#39;}&#39;里面有一个字符串。现在,应用程序将使用此字符串作为文件的名称以及要排序的数据。可以按如下方式访问数据:

String fileName = args[0]; // Assuming 'args' is the name of the String array parameter

您可以阅读有关此here的更多信息。