通过使用可选的命令行参数意味着什么?以及该段的其余部分。
当我启动时,程序采用可选的命令行参数,该参数是文件的名称。该文件的内容是人名的列表,每行一个。程序将读取这些名称并将它们存储在一个数组中。如果没有给出命令行参数,程序将只创建一个空数组,用于存储名称。
struct
答案 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的更多信息。