いったん値を減算実装である[4、1、2、3]あなたのサブトラクション法Aでこの配列を取りますオペレータ-
の+=
。 代わりに代わりにStream
-APIを使用するのはどうですか?
static IntBinaryOperator operatorFunction(char operator) {
if (operator == '-') {
return (int1, int2) -> int1 - int2;
}
return (int1, int2) -> int1 + int2;
}
あなたが期待するよう-13
を印刷し、次のIntBinaryOperator
-returning機能付き
IntStream.of(1, 2, 3, 4, 5)
.reduce(operatorFunction('-'))
.ifPresent(System.out::println);
。これはあなたが必要なすべてです。単純合計を達成するためにIntStream.sum
を使用することもできます。 operatorFunction
では、後で希望する場合は*
または÷
を追加することもできます。
(中間値を持つ)上記のコードを書くための別の方法:
int[] yourInputArray = {1, 2, 3, 4, 5};
char operator = '-';
OptionalInt = Stream.of(yourInputArray)
.reduce(operatorFunction(operator));
ちょうどあなたのオプションのためのOptionalInt
-javadocを見ているなど、ここからはorElse(0)
を呼び出すことができますかorElseThrow(() -> ...)
で例外をスローします。 int
プリミティブから離れるとすぐに、Stream
,BinaryOperator<Integer>
およびOptional<Integer>
を使用してコードを交換することができます。
ところで、現在のコードにIndexOutOfBoundException
もあります。しかし、あなたがStream
とそれほど数行のコードを使用できるのであれば、なぜインデックスと配列を使いこなすのでしょうか?
"+ ="の代わりに " - ="を使用してみましたか? –
あなたの例は、最初の要素に対して特別な扱いをします。そうですか?あなたは1-2-3-4-5を意味しましたか?あるいは、-1-2-3-4-5(最初の要素から始めて0から始まって始まる)を意味しましたか? – Arkadiy