Я пытаюсь преобразовать цикл for в функциональный код. Мне нужно посмотреть на одно значение, а также заглянуть за одно значение. Возможно ли использование потоков? Следующий код предназначен для преобразования римского текста в числовое значение. Не уверен, что здесь может помочь метод уменьшения с двумя/тремя аргументами.
int previousCharValue = 0;
int total = 0;
for (int i = 0; i < input.length(); i++) {
char current = input.charAt(i);
RomanNumeral romanNum = RomanNumeral.valueOf(Character.toString(current));
if (previousCharValue > 0) {
total += (romanNum.getNumericValue() - previousCharValue);
previousCharValue = 0;
} else {
if (i < input.length() - 1) {
char next = input.charAt(i + 1);
RomanNumeral nextNum = RomanNumeral.valueOf(Character.toString(next));
if (romanNum.getNumericValue() < nextNum.getNumericValue()) {
previousCharValue = romanNum.getNumericValue();
}
}
if (previousCharValue == 0) {
total += romanNum.getNumericValue();
}
}
}