【问题标题】:Take input at program execution在程序执行时接受输入
【发布时间】:2015-01-22 19:07:11
【问题描述】:

我正在考虑像往常一样在命令行上启动一个程序。 (即java myprogram)

但是我知道可以输入

  java myprogram configfile.txt 

所以它需要这个字符串,稍后在代码中我可以使用它来加载文件。

如果可能的话,我如何在程序中使用类似构造函数的东西来捕获这个输入。

【问题讨论】:

标签: java


【解决方案1】:
public static void main(String[] args) { ... }

args 数组包含来自命令行的参数。在您的示例中,文件名是args[0]。但是请注意,如果您将args[0] 硬编码到您的代码中,然后不传递参数,您将得到一个ArrayIndexOutOfBoundsException,因为args[0] 不存在。

如果需要,您可以扩展它以包含多个参数。例如

java myprogram configfile.txt configfile2.txt configfile3.txt

这些文件名将分别为 args[0] args[1]args[2]

如果您的程序可以带或不带参数运行,您可以通过检查数组的长度是否大于 0 来确定是否有一些。类似

if (args.length > 0) { myfile = args[0]; }
else { myFile = someDefaultFilename; }

或者如果你可以有多个参数,你可以遍历整个数组

for (String s : args) { //Do something with each parameter }

【讨论】:

  • 感谢您的关注。
  • 我将如何执行代码来检查是否传递了参数?如果执行 if 语句,则会抛出此异常 if (args[0]!=null){ filename = args[0]; }
  • 我会把它添加到答案中。
  • @chostwales if (args.length == x)x 作为预期大小。
  • 如果您使用for each 循环,则不必检查args 的大小。 args 不会是 null,如果它是空的,那么这个循环将被跳过而没有任何问题。
猜你喜欢
  • 2014-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
相关资源
最近更新 更多