2010-03-11 4 views
0

프로그램에 대해 아래의 명령 행 인수가 있습니다. 인수 proc는 필수 인수입니다. chgval은 선택적이며 인수 inputfile은 선택 사항입니다.Java 명령 행 인수에 관한 정보

./test.sh -proc 모드 1 -chval -inputfile b.csv

나는 아래의 기능을 수정해야

그래서 필수 인수와 함께 명령 줄 인수에 존재해야 선택적 인수 중 하나 proc. 두 개의 선택적인 인수 인 chval을 가지고 있다면, 명령 행에서 필수 인수 proc와 함께 inputfile이 허용됩니다. 나는 그것이 오류가 발생해야 일어날 싶지 않아.

아래 유효한 값을 나열하고 나머지 에러

./test.sh -proc MODE1 -chval

./test.sh -proc MODE1 -inputfile b.csv

에게 있어야

./test.sh -proc 모드 1이 필요 무엇


public static Options usage() { 

     Option proc = OptionBuilder.withArgName("proc") 
             .hasArg() 
             .isRequired() 
             .withDescription("Process Mode for testing:") 

             .create("proc"); 
     Option chgval = OptionBuilder.withArgName("chgval") 
             .hasArg() 
             .withDescription("chg eeds to be Processed") 
             .create("chgval"); 
     Option inputFile = OptionBuilder.withArgName("inputfile") 
             .hasArg() 
             .withDescription("Name of the input file") 
             .create("inputfile"); 

     Options options = new Options(); 
     options.addOption(proc); 
     options.addOption(chgval); 
     options.addOption(inputFile); 

     return options; 
    } 

수정해야합니까?

+0

숙제와 같은 냄새가납니다 (다른 모든 질문과 마찬가지로). 그렇다면 태그를 달아주세요. –

답변

2

사용해야 상호 배타적 인 옵션 당신은 OptionGroup를 사용합니다. 여기에 귀하의 경우에 그것을 사용하는 방법은 다음과 같습니다

Options options = new Options(); 

OptionGroup group1 = new OptionGroup(); 
group1.addOption(chgval); 
group1.addOption(inputFile); 

options.addOption(proc); 
options.addOptionGroup(group1); 

은 그래서 지금, chgvalinputFile는 상호 배타적 인 옵션입니다. "-proc mode1 -chgval a -inputfile b.csv" 같은 인수에서 AlreadySelectedException: "옵션 inputfile이 지정되었지만이 그룹의 옵션은 이미 선택되었습니다 : chgval"이 표시됩니다.

덧글 귀하의 게시물의 불일치가 chvalchgval 사이 인 것으로 나타났습니다.

+0

+1 내 대답을 확대에 대한 – Dancrumb

+0

정보 주셔서 감사합니다. – Arav

2

inputfilechgval는 상호 배타적해야한다는 것을 의미한다면, 당신은 Dancrumb은 정확했다 OptionGroup

+0

위 기능에서 변경해야 할 사항은 무엇입니까? – Arav

+0

정보를 보내 주셔서 감사합니다 – Arav