首页 > 解决方案 > 命令行参数传递给调用方法

问题描述

如何将字符串的命令行参数传递给 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);



   }  

}

标签: javalistif-statementarraylistwhile-loop

解决方案


您正在覆盖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);
      }

   }  

}

推荐阅读