1

2つのコマンドライン引数を接続する必要があります。ユーザーは-input「filename.txt」や「filename.txt」を入力することになっていますが、または部分をファイル名に-output接続できないようです。-input-output

したがって、たとえば、ユーザーは次のいずれかを入力できます。

java classname
java classname -input filename.txt
java classname -output filename.txt
java classname -input filename.txt -output filename.txt
java classname -output filename.txt -input filename.txt

私はこれを試しました:

        for(int i = 0; i < args.length; i++){
        if(args[i].equals("-input")){
            input = args[i + 1];
        }
        else{
            //input from terminal
        }

        if(args[i].equals("-output")){
            output = args[i + 1];
        }
        else{
            //output to terminal
        }

しかし、それは機能しておらず、エレガントではないようです。私はApacheCommonsCLIを調べてきましたが、それがどのように機能し、適切な機能があるかどうかを完全に理解していないようです。Apacheのものまたは他の方法を使用して、-inputをfilename.txtに接続する方法はありますか?

4

2 に答える 2

1

これはうまくいくはずです

public static void main(String[] args) {
    String input = findArg("input", args);
    String output = findArg("output", args);
}

static String findArg(String name, String[] args) {
    for (int i = 0; i < args.length; i += 2) {
        if (args[i].equals("-" + name)) {
            return args[i + 1];
        }
    }
    return null;
}
于 2013-02-24T04:26:31.143 に答える
0

ロジックに欠陥があります。それが機能しない理由です。次の引数を使用してプログラムを実行すると、java classname -input input.txt -output output.txtコードはターミナルから入力を受け取り、output.txtに出力します。

更新-実際にはNullPointerExceptionでクラッシュします

于 2013-02-24T04:27:28.627 に答える