我应该在哪里使用命令行参数而不是Scanner?

时间:2015-09-04 21:55:07

标签: java java.util.scanner

我知道当您在main中创建Class的{​​{1}}方法时,请按以下方式创建:

Java

我也知道名为public static void main(String[] args) 的{​​{1}} array用于在Strings方法中输入命令行参数,但我在{{1}上开发应用程序我从来没有使用过它,因为我总是按args输入我的值。

使用main而不是命令行参数是一种不好的做法? Eclipse列出了另一个目的吗?我什么时候应该使用Scanner数组?

提前致谢!

3 个答案:

答案 0 :(得分:3)

按相反的顺序:

  

我什么时候应该使用args数组?

传递命令行参数时。

  

args列出了另一个目的吗?

没有。它用于传递命令行参数。

  

使用Scanner而不是命令行参数是不好的做法?

并不总是可以使用ScannerScanner可能从STDIN读取,但在许多UNIX系统中,它首选从STDIN读取命令输入并使用命令行参数用于程序选项(例如--help或{{ 1}})。

答案 1 :(得分:0)

Scannermain的参数是两个完全不同的东西。扫描仪可用于询问用户某种动作。当您想要从其他应用程序或通过命令行启动jar时,main的参数是相关的。熟化:是否使用Scanner或参数是一个软件设计的问题,而不是编码风格。

答案 2 :(得分:0)

这完全取决于你的情况。问问自己这个问题:"价值来自哪里?我的程序获得这些值的最佳方式是什么?"

如果答案是"用户",然后提示用户,从而引导用户获得所需的值,则可能是最好的答案。

任何其他答案意味着这些值可能来自某个自动化过程,这意味着"提示"是一个糟糕的选择。现在突然有很多选择,再次由你的情况控制:

  • 命令行参数
  • 配置文件
  • 数据文件(例如CSV文件)
  • 网络通讯(例如网络服务)
  • 数据库
  • ......还有更多

有时组合是合适的,例如命令行参数以查找配置文件,其中可能包含扫描数据文件的目录

你甚至可以同时做两个"提示"和命令行参数。如果所有需要的值都作为参数提供,请使用它们,否则提示输入缺失值。然后不提供任何参数将提示所有值。