java - 命令行参数传递给调用方法
问题描述
如何将字符串的命令行参数传递给 java main 方法,该方法将调用另一个类中的特定方法?
我需要能够传递“java Statdriver mean”将调用 mean 方法或“java Statdriver std”将调用标准偏差方法,或者不传递任何参数将导致通过终端调用 mean 方法。
按我的方式做似乎行不通。我认为我的问题在于 if、else if、else 循环。
这是我的代码:
public class StatDriver
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
double total;
double mean;
double standardDeviation;
double average;
total = 0;
args[0] = "mean";
args[1] = "std";
ArrayList<Double> data = new ArrayList<Double>();
while(input.hasNextDouble())
{
data.add(input.nextDouble());
}
if(args.equals(args[0]))
{
mean = Stats.mean(data);
System.out.println("Mean: " + mean);
}
else if(args.equals(args[1]))
{
standardDeviation = Stats.stdDev(data);
System.out.println("StdDev: " + standardDeviation);
}
else
{
mean = Stats.mean(data);
System.out.println("Mean: " + mean);
}
// mean = Stats.mean(data);
//standardDeviation = Stats.stdDev(data);
//System.out.println("Mean: " + mean);
// System.out.println(" StdDev: " + standardDeviation);
}
}
解决方案
您正在覆盖args
变量。这应该是这样的:
public class StatDriver
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
double total;
double mean;
double standardDeviation;
double average;
total = 0;
String[] possibleArgs = new String[2];
possibleArgs[0] = "mean";
possibleArgs[1] = "std";
ArrayList<Double> data = new ArrayList<Double>();
while(input.hasNextDouble())
{
data.add(input.nextDouble());
}
if(possibleArgs[0].equals(args[0]))
{
mean = Stats.mean(data);
System.out.println("Mean: " + mean);
}
else if(possibleArgs[1].equals(args[1]))
{
standardDeviation = Stats.stdDev(data);
System.out.println("StdDev: " + standardDeviation);
}
else
{
mean = Stats.mean(data);
System.out.println("Mean: " + mean);
}
}
}
推荐阅读
- javascript - 只需单击一次按钮即可更改多列中的内容
- matrix - Python:如何用雅可比行有效地解决 DAE?
- javascript - 将 API 调用的结果存储到 JavaScript 数组
- java - 如何生成自闭标签
使用 JAXB 处理 XML 中的空元素 - arrays - 有没有循环 array.map() 函数的方法?
- php - 自定义 URL 指向 php 文件
- php - php电子邮件验证功能未得到处理
- r - SQL从R创建表 - 字符串数据,右截断
- computer-vision - Visual SLAM 一条直线走廊,如果将机器人向后移动到起点,闭环是否优化了结果?
- javascript - FabricJS剪辑路径边框颜色并将覆盖图像移动到剪辑路径后面?