【问题标题】:Java passing command line arguments to methodsJava将命令行参数传递给方法
【发布时间】:2010-12-11 20:43:05
【问题描述】:

我正在编写一个程序,它将两个单词作为命令行参数,对它们执行一些操作,然后打印出结果。我正在编写一个类来处理这个问题,我的问题是:在类中的方法之间传递作为命令行参数给出的两个单词的最佳方法是什么?为什么我不能在带有“args”的构造函数中使用通常的“this.variable =”?

【问题讨论】:

    标签: java command-line arguments


    【解决方案1】:

    如果你将args 传递给构造函数,你可以:

    public class Program
    {
        private String foo;
        private String bar;
    
        public static void main(String[] args) 
        {
            Program program = new Program(args);
            program.run();
        }
    
        private Program(String[] args)
        {
            this.foo = args[0];
            this.bar = args[1];
            // etc
        }
    
        private void run()
        {
            // whatever
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果您希望在命令行上传递一些参数,您可以使事情变得更加健壮,并检查它们是否确实被传递了。然后,将args 数组或其值传递给构造函数。像这样的:

      public class App {
          private final String arg0;
          private final String arg1;
      
          public static void main(String[] args) {
              if (args.length < 2) {
                  System.out.println("arguments must be supplied");
                  System.out.println("Usage: java App <arg0> <arg1>");
                  System.exit(1);
              }
              // optionally, check that there are exactly 2 arguments
              if (args.length > 2) {
                  System.out.println("too many arguments");
                  System.out.println("Usage: java App <arg0> <arg1>");
                  System.exit(1);
              }
      
              new App(args[0], args[1]).echo();
          }
      
          public App(String arg0, String arg1) {
              this.arg0 = arg0;
              this.arg1 = arg1;
          }
      
          public void echo() {
              System.out.println(arg0);
              System.out.println(arg1);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-30
        • 1970-01-01
        • 2018-11-02
        • 1970-01-01
        • 2019-08-01
        • 1970-01-01
        • 2015-06-09
        • 2017-10-22
        相关资源
        最近更新 更多