Ваше вычитание работает хорошо.Вам просто нужно решить, всегда ли результат должен начинаться с 0.
int result = dynamicSub(12, 15, 18); // returns -45
Вот немного измененная версия вашего метода деления.Это позволяет избежать деления на 0, и вы можете передать начальное значение для результата.
public int dynamicDivision(int start, int... n) {
int result = start;
for (int i : n) {
if(i != 0 && result != 0) {
result = result / i;
}
}
return result;
}
Используя эту новую версию метода, в моем следующем примере результатом будет 3.
1000 - начальное значение результата.
0, 15, 18 - значения, на которые результат делится.
int result = dynamicDivision(1000, 0, 15, 18); // result is 3