有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

设置字符串格式时发生java FormatFlagsTransversionMismatchException异常

我在程序中进行除法,并将结果打印到屏幕上。运行程序时没有问题,但当我尝试启动单元测试时,会收到以下错误:

java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = 0

在以下行:

String underscoreToResult = String.format("%" + (i - 2) + "s", "_");

下面我提供了与此方法相关的所有代码:

private StringBuilder bodyOfMethodCalculateDivisionWhenDividentLessThanDivisor(StringBuilder result, Integer reminderInInteger, int divisor, int divident, Integer divisorMuplipliedByQuotient,
                                                                               StringBuilder lastReminder, int i) {

    String underscoreToResult = String.format("%" + (i - 2) + "s", "_");
    String resultedReminder = reminderInInteger.toString();
    result.append(underscoreToResult).append(resultedReminder).append("\n");
    String multiply = String.format("%" + (i + 2) + "d", divisorMultipliedByQuontient(divisorMuplipliedByQuotient, divisor, reminderInInteger));
    result.append(multiply).append("\n");

    if (divident < divisor) {
        printLastNumber(lastReminder, reminderInInteger, multiply);
    }
    Integer tab = resultedReminder.length() - calculateAmountOfDigits(divisorMultipliedByQuontient(divisorMuplipliedByQuotient, divisor, reminderInInteger));
    String drawDashes = String.format("%" + (i + 2) + "s", createDivisor(divisorMultipliedByQuontient(divisorMuplipliedByQuotient, divisor, reminderInInteger), tab));
    result.append(drawDashes).append("\n");
    return result;
}

共 (1) 个答案

  1. # 1 楼答案

    方法String.format("%Ns", "_");需要N>;0

    由于您使用的是String.format("%" + (i - 2) + "s", "_");,因此需要确保单元测试始终使用i >= 3运行,以便出现任何异常