java - 在命令行上提供字符串的正确方法是什么?
问题描述
我正在创建一个程序来查找用户给出的双精度值的 ArrayList 的标准偏差。我要在命令行上提供一个字符串来指示我想要平均值(mean)还是标准差(std)。但是,我很难将这些字符串提供给命令行。
这是我得到的错误:
> Exception in thread "main" java.lang.NumberFormatException: For input string: "std"
at java.base/java.lang.NumberFormatException.forInputString(Unknown Source)
at java.base/java.lang.Integer.parseInt(Unknown Source)
at java.base/java.lang.Integer.parseInt(Unknown Source)
at StatDriver.main(StatDriver.java:28)
public static void main(String[] args) {
Scanner input;
ArrayList<Double> data;
int dataSize;
String userInput = "";
// Determine the appropriate array size.
if (args.length > 0) {
dataSize = Integer.parseInt(args[0]);
} else {
dataSize = 15;
}
// Create the array.
data = new ArrayList<Double>(dataSize);
// Read values from the terminal.
input = new Scanner(System.in);
while (input.hasNextDouble()) {
data.add(input.nextDouble());
}
// Calculate and display the results.
if(args[0] == "mean") {
System.out.printf("Mean: %.2f\n", Stats.mean(data));
}
else if (args[0] == "std") {
System.out.printf("StdDev: %.2f\n", Stats.stdDev(data));
}
else {
System.out.printf("Mean: %.2f\n", Stats.mean(data));
}
}
}
解决方案
这需要修复:
如果您传入单个命令行参数“std”或“mean”,那么由于 args.length 大于 0,尝试将“std”或“mean”解析为 Integer 值时会抛出错误。
// Determine the appropriate array size.
if (args.length > 0) {
dataSize = Integer.parseInt(args[0]);
} else {
dataSize = 15;
}
因此,如果您将检查更改为这样的内容,并输入“java StatDriver std 10”:
解析将成功,因为您将能够解析第二个位置的参数“10”。
// Determine the appropriate array size.
if (args.length > 0) {
dataSize = Integer.parseInt(args[1]);
} else {
dataSize = 15;
}
通常,如果您使用命令行参数运行程序 java 程序:
java MyProgram one two
public static void main(String [] args) {
String one = args[0]; //=="one"
String two = args[1]; //=="two"
}
推荐阅读
- javascript - Chrome 扩展:使用参数启动选项页面
- c# - 属性更改时页面不更新
- java - Tomcat 在本地主机上工作正常,但在部署时出现内部服务器错误
- javascript - 是否可以保证 onchange 会比添加到标签的事件更早运行?
- java - 如何更快地对 ArrayList 进行排序?
- github - Heroku:通过 GitHub 自动部署没有 Slack 通知
- delphi - 如何禁用使用 CEF 呈现网页的其他应用程序的硬件加速?
- java - 反序列化为大小为 0 的数组
- javascript - 使用 JavaScript 动态更改背景颜色
- java - 如何从PDF图像中提取文本