输出 0 除以 100 的结果的类:
private String drawResultForDividentThatEqualsZero(StringBuilder result, Integer divisor) {
result.append("_0").append(SYMBOL_VERTICAL_BAR).append(divisor.toString()).append("\n");
result.append(" 0").append(SYMBOL_VERTICAL_BAR).append("-").append("\n");
result.append(" -").append(SYMBOL_VERTICAL_BAR).append("0").append("\n");
result.append(" 0");
return result.toString();
}
还有2个重点:
public static final String SYMBOL_VERTICAL_BAR = "|";
StringBuilder result = new StringBuilder();
失败的测试:
@Test
public void Should_MakeDivision_When_DividentEqualsZero() {
String expected = "_0│100\n" +
" 0│-\n" +
" -│0\n" +
" 0";
assertEquals(expected, numbersDivision.makeDivision(0, 100));
}
makeDivison 主要方法:
public String makeDivision(int introducedDividend, int introducedDivisor) {
StringBuilder result = new StringBuilder();
StringBuilder reminder = new StringBuilder();
StringBuilder quotientForDividentMoreThanDivisor = new StringBuilder();
StringBuilder quotientForDividentLessThanDivisor = new StringBuilder("0.");
StringBuilder lastReminderNumber = new StringBuilder();
int dividend = Math.abs(introducedDividend);
int divisor = Math.abs(introducedDivisor);
checkExceptions(divisor);
Integer divisorMuplipliedByQuotient = 0;
Integer reminderInInteger = 0;
Integer newReminder = 0;
String[] digits = String.valueOf(dividend).split("");
mainMethodForCalculateDivision(dividend, divisor, digits, reminderInInteger, reminder, divisorMuplipliedByQuotient, result, quotientForDividentMoreThanDivisor, quotientForDividentLessThanDivisor,
newReminder, lastReminderNumber);
return result.toString();
}
和 mainMethodForCalculateDivision :
private String mainMethodForCalculateDivision(Integer dividend, int divisor, String[] digits, Integer reminderInInteger, StringBuilder reminder, Integer divisorMuplipliedByQuotient,
StringBuilder result, StringBuilder quotientForDividentMoreThanDivisor, StringBuilder quotientForDividentLessThanDivisor,
Integer newReminder, StringBuilder lastReminderNumber) {
if (dividend == 0) {
drawResultForDividentThatEqualsZero(result, divisor);
return result.toString();
}
if (dividend >= divisor) {
for (int i = 0; i < digits.length; i++) {
calculateDivisionWhenDividentMoreOrEqualsDivisor(reminder, digits, i, divisor, divisorMuplipliedByQuotient, dividend,
result, quotientForDividentMoreThanDivisor, quotientForDividentLessThanDivisor, newReminder, lastReminderNumber);
}
improveResultViewing(dividend, divisor, result, quotientForDividentLessThanDivisor, quotientForDividentMoreThanDivisor, lastReminderNumber,
reminderInInteger);
return result.toString();
}
checkIfDividentEqualsZeroOrLessThanDivisorAndCalculate(dividend, divisor, reminder, reminderInInteger, digits, divisorMuplipliedByQuotient, newReminder, quotientForDividentMoreThanDivisor,
quotientForDividentLessThanDivisor, result, lastReminderNumber);
return result.toString();
}
可能无法从 StringBuilder 转换为 String,但如果是这样,我不明白到底在哪里..