2017-02-13 7 views
-2

Javaプログラムへの入力として、コマンドライン引数でBigIntegersのArrayListを渡そうとしています。Javaプログラムのコマンドライン引数としてArrayListを渡すことができます

java myProgram one two 

args[0] = "one" 
args[1] = "two" 

をしかし、私だったら、私はArrayList<BigInteger>に戻って、このArrayListののString[]表現を変換する方法を、このような

java myProgram arrayList 

としてプログラムを実行するために:

私は、次のようなプログラムを呼び出す理解します

arrayListは、BigInetegrのarrayListを返す個別のJavaファイルから返されます。javこのプログラムへの入力としてのプログラム?

私はこれについてどうやって行くのか少し混乱しています。

ありがとうございます!

+1

コマンドライン引数は文字列です。したがって 'String []'。ちょうどそれらを解析する。私は直列化された 'ArrayList 'をファイルにダンプして、それをSTDINにパイプすることができると思いますか?しかしそれにはそれほどの理由はありません。 –

+0

あなたは '' '' ''が '' 1 'になりたいですか?あるいは実際の10進文字列をプログラムに渡すつもりですか? '' 123 "'? – weston

答えて

1

実際の小数点文字列をプログラムに渡す限り、たとえば、次のようになります。 java myProgram 123 456

List<BigInteger> bigInts = new ArrayList<>(args.length); 
for(int i = 0; i < args.length; i++) 
    bigInts.add(new BigInteger(args[i])); 

または使用してJava 8ストリーム:

List<BigInteger> bigInts = Arrays.stream(args) 
          .map(BigInteger::new) 
          .collect(Collectors.toList()); 

しかし、あなたはあなたのプログラムに単語を渡している場合、2つの物事は、あなたがBigIntegerに英語の単語を解析するカスタム関数を必要とし、加えてIだろう誰かが十分大きな整数をタイプすることに疑問がある場合は、BigIntegerが必要です。

+0

OPが特に 'ArrayList'を望む場合、' Collectors.toCollection(ArrayList :: new) 'を使う価値があります。また、「30億」が大き過ぎて「int」に収まりきらない - 時には単語が非常に簡潔になることがある。いずれにしても、+1 –

+0

@BoristheSpider Trueですが、「int」と「30億」は「long」には当てはまりませんでした。 – weston

+0

Meh、 'long 'の最大値は9および1/4 quintillion程度です。 (US "short scale") –

関連する問題