2016-10-19 12 views
-3

Javaでは、コマンドライン引数 "-p3"を読み込もうとしています。例えば、 "-p3"は私に2つの情報を教えてくれるでしょう。 "p"は変数のタイプを "people"と区別します。 "3"は変数のインスタンス化する変数の数を区別します。プログラムのコマンドラインにある "-p3"は、私たちに3人の人がいると言っています。Java - コマンドラインで値を持つ変数名を解析する

"p"と "3"を分ける方法が混乱しています。 .split()を使用するためのカンマのような文字はありません。

提案がありますか?

+1

「文字列」が提供する他の方法を見てみましょう。 – f1sh

+0

コマンドライン解析(Googleはあなたの友人)専用のライブラリを使用するか、最初の文字の後に分割します。 –

+0

多分apache commons-cliはあなたの苦痛を和らげることができます.... https://commons.apache.org/cli/ –

答えて

0

あなたはこのような何かを行うことができます:

... 
String firstArgument = args[0]; 
if(firstArgument.charAt(1)=='P') { 
    int amount=Character.getNumericValue(firstArgument.charAt(2)); 
    for (int i=0; i<amount;i++){ 
    //Initialize valid object and maybe saving it in an list/array 
    ... 
    } 
} 
... 
+0

あなたはより良い入力検証をしたいと思うでしょう。引数 '-p10'を指定すると上記のように1が返され、引数' Spot'はプログラムが 'NumberFormatException'でクラッシュすることになります。 –

+0

私は間違っていました。「スポット」はクラッシュしません。 'アップ'します。 –

+0

あなたが私の答えで見ることができるように、 "..."で示される前のコードを省略しています。私はこれが100%弾丸ではないことをよく知っています。 )askerのアイデアとしてだけ機能する必要があります;) –

0

それは批判するのは簡単です(私は他の回答にコメントで行ったように)。

final String peopleArg = "-p"; 
    for (String arg : args) { 
     if (arg.startsWith(peopleArg)) { 
      String numberAsString = peopleArg.substring(peopleArg.length()); 
      try { 
       int noOfPeople = Integer.parseInt(numberAsString); 
       if (noOfPeople > 0) { 
        createPeople(noOfPeople); 
       } else { 
        System.err.println("Incorrect number of people to create: " + numberAsString); 
       } 
      } catch (NumberFormatException nfe) { 
       System.err.println("Incorrect number of people to create: " + numberAsString); 
      } 
     } 
    } 
関連する問題