2016-07-30 4 views
0

私は、-dコマンドラインオプションでパラメータを設定できるようにする必要があるという問題を解決しています。 javaは引数に-dオプションを渡すメカニズムを提供していますか?何も見つかりませんでしたので、コマンドラインオプションの値が-dであると解釈しています。これは、ユーザーが次にパラメータを入力したがっていることを意味します。Javaで-dオプションを渡す

if (args[0].equals("-d")) 
{ 
    parameter = args[0]; 
} 

これは正しい方法ですか?ユーザーが-dオプションを入力したかどうかを確認する良い方法はありますか? javaはそれに対していくつかの他の仕組みを提供していますか?

+0

コマンドライン引数パーサーを使用してください。 [JCommander](http://jcommander.org/)(私の所属はありません)は私の好みです - 他にもあります。 –

+0

それで 'parameter =" -d "'、または 'null' - それはあなたが望むものですか?たとえばApache Commons CLIを見てみましょう。そして、http://stackoverflow.com/questions/10745811/how-to-use-terminal-arguments-with-values-in-java –

答えて

1

誰かが./yourapp something else -dでプログラムを実行するとどうなりますか? 引数-dは存在しますが、位置0にはありません

したがって、すべての引数をループして必要なものをチェックすることをお勧めします。

int i; 
boolean dParam = false; 
for (i = 0; i < args.length; i++) { 
    if (args[i].equals("-d")) { 
     dParam = true; 
    } 
} 

ファイル名のように-d後の入力何かにユーザーを、必要な場合、私はこれを行うことをお勧めします:

int i; 
boolean dParam = false; 
String dParamValue; 

for (i = 0; i < args.length; i++) { 
    if (args[i].equals("-d")) { 
     dParam = true; 
     dParamValue = args[++i]; 
    } 
} 
+0

これは、車輪を再発明するような多くを見て始めています。あなたのものはやや正方形です... –

+0

それは車輪を再発明していません。これは動作するOPの初期コードの更新版です。 – Ibrahim

0

あなたが実行しているプログラムに渡すすべてのパラメータは、予定されていますパラメータthrougアプリケーションにおける主な方法でのString [] argsを ..

辞書があっ要求された場合は、引数の配列は、そのキーが含まれている場合は、その後だけチェックすることで、確認することができます。..

例:

public static void main(String[] args) { 
System.out.println("is dictionary there?: " + Arrays.asList(args).contains("d")); 

if (Arrays.asList(args).contains("d")) { 
    prepateDictionary(); 
}else { 
    prepareSomethingElse(); 
} 

} 
1

私は要件が-D(資本金1)、ない-d意味だと思います。このようなオプションは、javaに追加のパラメータを渡すために使用されます。例えば、-Dmy.option=value。そのような場合には、Systemクラスを使用してこのプロパティにアクセスできます。

関連する問題