gpt4 book ai didi

java - 覆盖对象的 toString() 表示返回意外的符号

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:30:04 32 4
gpt4 key购买 nike

我正在为 Clock 类编写 JUnit 测试方法,以确保对象的 toString 表示以我想要的格式返回。因此,我已经覆盖了 toString() 并将其编写为它希望它被表示但是当我将它与我在 JUnit 中期望的格式进行比较时它失败并显示以下内容:

org.junit.ComparisonFailure:预期:<时间:10:0[0:0]0> 但为:<时间:10:0[:]0>

为什么这里显示符号 [ 和 ]?它是我不知道的 toString() 表示的一部分吗?相关代码如下:

JUnit:

    @Test
public void testFormattingOfTimeIsDisplayedCorrectly() {

final byte TEN = 10;
final byte DBL_ZERO = 00;

clock.setTime(TEN, DBL_ZERO, DBL_ZERO);

final String EXPECTED_STRING = "Time : 10:00:00";

assertEquals(EXPECTED_STRING, clock.toString());

}

Clock 类中的 toString():

@Override
public String toString() {
return "Time : " + hours + ":" + minutes + ":" + seconds;
}

和时钟类中的 setTime 方法:

public void setTime(byte hour, byte minutes, byte seconds) {

this.hours = hour;
this.minutes = minutes;
this.seconds = seconds;

}

我想知道,这可能与使用字节有关?或者它只是我不明白的 toString() 返回的东西。我只是对为什么我的 JUnit 方法没有将它们视为相同的格式感到困惑。

最佳答案

这个:

<10:0[0:0]0 > but was:< Time : 10:0[:]0>

表示区别。即输出是 10:0:0 而不是 10:00:00。鉴于您的代码执行此操作,这不足为奇:

return "Time : " + hours + ":" + minutes + ":" + seconds;

并且分钟/秒没有用零填充。或许可以查看带有 %02d 格式设置的 String.format()。我不明白(也不)为什么你会使用 byte 作为值。 int 是一种更常见的类型,可以在这里使用。

关于java - 覆盖对象的 toString() 表示返回意外的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13181734/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com