Как можно сократить такой вот метод
public String format(DivisionResult divisionResult) {
StringBuilder result = new StringBuilder();
// -------change-----------------------------
if (divisionResult == null || divisionResult.getDivisor() == 0) {
return "";
}
if (divisionResult.getDividend() == 0) {
return "0";
}
// -------change-----------------------------
int[] multiplyResult = divisionResult.getMultiplyResult();
int[] remainderNumbers = divisionResult.getRemainderNumber();
int remainderElementLength = remainderNumbers.length;
for (int i = 0; i < remainderElementLength; i ++) {
if (i == remainderElementLength - 1) {
int indent = (remainderNumbers[i] != 0) ? 1 : 0;
result.append(String.format("%" + (i + indent) + "s", remainderNumbers[i])).append("\n");
break;
}
if (multiplyResult[i] != 0) {
result.append(_formLastSection(remainderNumbers[i], multiplyResult[i], i));
}
}
modify(divisionResult, result);
return result.toString();
}
Вроде как-то можно упростить блок if выделенный как --Change--, но я не могу понять как. Подойдут любые варианты
Мне кажется, что условие if (i == remainderElementLength - 1) { имеет смысл вытащить из цикла
int[] multiplyResult = divisionResult.getMultiplyResult();
int[] remainderNumbers = divisionResult.getRemainderNumber();
int lastRemainderElement = remainderNumbers.length - 1;
for (int i = 0; i < lastRemainderElement; i++) {
if (multiplyResult[i] != 0) {
result.append(_formLastSection(remainderNumbers[i], multiplyResult[i], i));
}
}
int indent = (remainderNumbers[lastRemainderElement] != 0) ? 1 : 0;
result
.append(String.format(
"%" + (lastRemainderElement + indent) + "s%n",
remainderNumbers[lastRemainderElement]
));
modify(divisionResult, result);
return result.toString();
Ну и должно выполняться условие remainderNumbers.length > 0
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости