2009-10-31 78 views
3

我正在編寫一個程序,它將兩個單詞作爲命令行參數,對它們執行某些操作並打印出結果。我在寫一個類來處理這個問題,我的問題是:在類中的方法之間傳遞兩個作爲命令行參數的單詞的最佳方式是什麼?爲什麼我不能在構造函數中用「args」使用通常的「this.variable =」?Java將命令行參數傳遞給方法

回答

7

可以,如果你通過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 
    } 
} 
+0

謝謝!我是一個帶有命令行參數的初學者。 – rize 2009-10-31 11:12:35

+0

這太可愛了:) +1對於 – 2009-10-31 11:39:17

+0

我得到了'方法run()未定義類型Program'。在不同版本的Java中可能會有所不同?我正在使用Java 5. – rize 2009-10-31 11:46:34

1

如果你希望一些參數可以在命令行上傳遞,可以讓事情變得更強大,檢查它們是否確實傳遞。然後,將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); 
    } 
} 
+0

+1讓用戶知道命令行參數的用法。我還沒有看到許多程序員正在這樣做。儘管這篇文章很老,但我喜歡你處理CLA的方式。從你身上學到了一些東西。 :) – Saad 2017-03-28 00:01:00