2

複数の数の階乗を計算するプログラムがあります。これらのnuberは、次のようにcmdのパラメーターとして渡されます。

factorial.exe 3 4 5

これにより、それぞれ3、4、5の階乗が計算されます。プログラムの以前のバージョンには、スタックの満杯を示すパーセンテージがありました。今すぐ元に戻したいのですが、cmdのパラメーターとして待機時間を渡すこともできます。

factorial.exe 3 4 5 wait_time1

また

factorial.exe 3 4 5 1000

数値を読み取るために、このargsパーサーを使用します。

static string the_time;
    public static void Main(string[] args)
    {

        foreach (string s in args)
        {

            extra = int.Parse(s);

            Calculate(extra);
        }
     }

どうすれば引数を分けることができますか?前もって感謝します。

4

6 に答える 6

4

waittimeスイッチのように引数を追加できるので、それがであることがわかっている/t:100場合にのみ。/twaittime

引数に常にが含まれることがわかっている場合waittimewaittime

waittime = arg[args.Length-1]

おそらく一見の価値もあります

車輪の再発明をしたくない場合

于 2012-08-02T07:06:14.647 に答える
1

必要なのは、UNIXライクなマシンでgetoptを実行して、適切な方法で引数を解析するようなものだと思います。こちらをご覧ください。

于 2012-08-02T07:07:54.870 に答える
0

配列の各要素は、スペースで分割されたコマンドラインからの文字列になります。このように、

factorial.exe 3 4 5

あなたが持っています

args[0] //3
args[1] //4
args[2] //5

編集

DD59のおかげで、あなたの質問を理解できました。-time最後のパラメーターは常に待機時間になるという規則を設定することも、 (または/t:、彼が言ったように)などの構文を使用することもできます。

factorial.exe 3 4 5 -1000

よろしく

于 2012-08-02T07:05:20.787 に答える
0

wait_timeは必須の引数ですか?それは常に最後の場所に立っていますか?次に、次のように実行できます。

the_time = args[args.Length - 1];
for (int i=0; i<args.length - 1; i++){ 
    extra = int.Parse(args[i]); 
    Calculate(extra); 
} 

wait_timeがオプションの場合は、DD59の回答を使用する必要があります。

于 2012-08-02T07:14:27.197 に答える
0

すでにforeachループで引数を分離しています。文字列sは、引数として取得するものです。wait_timeの値を正確に特定し、もちろん計算したくないと思います。次のように位置を修正する必要があります-最後の引数はwait_timeであるか、最初の引数はです。場所を修正しないと、判断が難しくなります。

于 2012-08-02T07:09:15.063 に答える
0

コマンドラインの解析は非常に複雑な部分です。利用可能なライブラリ(いくつかの例)を確認する必要があるかもしれません。

于 2012-08-02T07:19:40.560 に答える