2009-04-04 5 views
20

첫 번째 문자열 인수로 'a'가 입력되었는지 감지하려고합니다.Java 커맨드 라인 인수

+0

가능한 중복 (http://stackoverflow.com/ 질문/367706/how-to-parse-command-line-arguments-in-java) – xenteros

답변

31
public class YourClass { 
    public static void main(String[] args) { 
     if (args.length > 0 && args[0].equals("a")){ 
      //... 
     } 
    } 
} 
1

main 메서드는 String[] 인수를가집니다. 여기에는 응용 프로그램에 전달 된 인수가 포함되어 있습니다 (종종 args이라고 부르지 만 요구 사항은 아닙니다).

5

명령 줄 인수는 첫 번째 String[] 매개 변수에서 main()으로 전달됩니다.

public static void main(String[] args) { 
} 

위 예제에서 args에는 모든 명령 줄 인수가 포함되어 있습니다. 질문에 짧은, 달콤한 답이 제기

은 다음과 같습니다

public static void main(String[] args) { 
    if(args.length > 0 && args[0].equals("a")) { 
     // first argument is "a" 
    } else { 
     // oh noes!? 
    } 
} 
2

명령 줄 인수가 main 방법의 String[] args 매개 변수를 통해 액세스 할 수 있습니다.

첫 번째 인수에 대한

당신은 args[0]

전체 코드가

과 같을 것이다 확인할 수 있습니다
public static void main(String[] args) { 
    if ("a".equals(args[0])) { 
     // do something 
    } 
} 
15

모든 자바 프로그램은

public static void main(String[] args) { 

main() 매개 변수로 소요되는 유형 String의 배열로 시작 프로그램에 명령 행 인수를 보유합니다. 사용자는

$ java myProgram a 

다음 args[0]는 문자열 "A"를 개최한다로 프로그램을 실행합니다.

0

다른 사람들이 말한 것처럼 ... .equals 메서드는 필요한 것입니다. ==는 두 객체 (물리적 평등)보다는 내용 (논리 평등)의 위치를 ​​비교하기 때문에 다음이 작동하지 않습니다

if(argv[0] == "a") 

: 오프에서

는 같은 것을 사용 기회.

명령 줄의 "a"와 프로그램 소스의 "a"는 두 개의 다른 위치에 할당되므로 ==는 사용할 수 없습니다. 두 문자열이 같은 문자를 가지고 있는지 확인하는 equals 메서드를 사용해야합니다.

"a"== "a"는 문자열이 Java에서는 특별하지만 .equals를 사용하려는 시간은 99.99999999999999 %이므로 많은 경우에 작동합니다.

37

단일 인수 이전으로 확장하려는 경우 apache commons cli을 사용하십시오.

"Apache Commons CLI 라이브러리는 프로그램에 전달 된 명령 행 옵션을 구문 분석하기위한 API를 제공하며, 명령 행 도구에서 사용할 수있는 옵션을 자세히 설명하는 도움말 메시지도 인쇄 할 수 있습니다.긴 옵션과 같은 (. 즉, 타르 -zxvf foo.tar.gz)

  • GNU (옵션 같은

    • POSIX 즉 뒤 --human 읽을 수있는 "

      커먼즈 CLI 옵션의 다른 유형을 지원합니다. - 최대 깊이 = 1)

    • Java와 유사한 속성 (예 : java -Djava.awt.headless = true -Djava.net.useSystemProxies = true Foo)
    • 값이 첨부 된 짧은 옵션 (예 : gcc -O2 foo.c)
    • 긴 옵션 (단일 하이픈 포함) (예 : ant -projec thelp)
  • 1

    시도 값 a를 통과하고 같은 equals 메소드를 사용하여 비교 :

    public static void main(String str[]) { 
    
        boolean b = str[0].equals("a"); 
    
        System.out.println(b); 
    
    } 
    

    보다 약 Command line argument in Java

    +0

    이것은'null'이 아닌 ... – Samoth

    0

    명령 줄 인수를 알 수있는이 링크를 따르 문자열로 저장됩니다 String 배열 String[] args that is passed to main()`.

    java [program name] [arg1,arg2 ,..] 
    

    명령 줄 인수는 프로그램을 실행하는 동안 명령 프롬프트에서 허용하는 입력입니다. 전달 된 인수는 무엇이든 될 수 있습니다. args[] 배열에 저장됩니다.

    //Display all command line information 
         class ArgDemo{ 
          public static void main(String args[]){ 
          System.out.println("there are "+args.length+"command-line arguments."); 
          for(int i=0;i<args.length;i++) 
          System.out.println("args["+i+"]:"+args[i]); 
        } 
        } 
    

    예 :

    java Argdemo one two 
    

    출력 될 것입니다 : [? 자바 명령 줄 인수를 구문 분석하는 방법]

    there are 2 command line arguments: 
    they are: 
    arg[0]:one 
    arg[1]:two 
    
    +0

    예제에서'javastack.java.'는 무엇을 의미합니까? ? 나는 그것이 프로그램을 실행하는 동안 명령 프롬프트에서 입력을 받아들이는데 사용 된 것이 무엇인지에 대해 모르지만 순서는 1) 구문 분석 명령 2) 설정 매개 변수 3) 프로그램 실행. 나는이 프로그램이 '프로그램이 사용자 입력에 의존 할 때 프로그램 실행을 본질적으로 빠르게 할 것'이라는 것을 확실히 모르지만 _parameter에 _ 인자 _ 안에는 아무것도 없다. – greybeard

    관련 문제