java我应该在哪里使用命令行参数而不是扫描器?
我知道,当您在Java
中创建Class
的main
方法时,您可以按如下方式创建它:
public static void main(String[] args)
我还知道,名为args
的array
用于在main
方法中输入命令行参数,但我在Eclipse
上开发了我的应用程序,我从未使用过它,因为我总是通过Scanner
输入值
使用Scanner
而不是命令行参数是一种糟糕的做法?args
数组还有其他用途吗?什么时候应该使用args
数组
提前谢谢
# 1 楼答案
Scanner
和main
的参数是两个完全不同的东西。扫描仪可以用来要求用户采取某种行动。当您想从另一个应用程序或通过命令行启动jar时,main
的参数是相关的。熟记:是否使用Scanner
或参数是软件设计的问题,而不是编码风格的问题# 2 楼答案
这完全取决于你的情况。问自己这样一个问题:“这些价值观来自哪里?我的程序接收这些价值观的最佳方式是什么?”
如果答案是“用户”,那么提示用户从而引导用户选择所需的值可能是最好的答案
任何其他答案都意味着这些值可能来自某个自动化过程,这意味着“提示”是一个错误的选择。现在突然有很多选择,同样由你的环境控制:
有时组合是合适的,例如,使用命令行参数查找配置文件,其中可能包括一个目录,用于扫描数据文件
您甚至可以同时执行“提示”和命令行参数。如果所有需要的值都作为参数提供,请使用它们,否则会提示输入缺少的值。不提供任何参数将提示输入所有值
# 3 楼答案
按相反顺序:
当您传递命令行参数时
不,它是用来传递命令行参数的
并非总是可以使用
Scanner
。一个Scanner
可以从STDIN读取,但在许多UNIX系统中,它更倾向于从STDIN读取命令输入,并为程序选项使用命令行参数(例如help
或-h
)