【问题标题】:Simple Boolean 'isSet'简单的布尔“isSet”
【发布时间】:2016-04-02 03:28:00
【问题描述】:

所以我有两组代码,一组用于 Employer,一组用于 Employee,我得到了一张 UML 图,告诉我具体要做什么,但我在一个特定部分遇到问题...

Employee 有两个主要变量,一个 ID 和 Name..

在 UML 上,它说

如果 name 和 id 已设置为非默认值,则返回 true。否则为假。'

这是我当前的代码:

public boolean isSet() {
    if (!(name.equals("NOT SET") && id == -1)) {
        return true;
    } else {
    return false;
    }
}

提供了一个 JUnit 测试,我已经把头发扯了好几个小时了......

public void testIsSet() {
    Employee e = new Employee("Mr Tumble");
    e.setId(99);
    assertTrue(e.isSet());
    e.setId(-1);
    assertFalse(e.isSet());
    e.setId(0);
    assertTrue(e.isSet());
    e.setName("NOT_SET");
    assertFalse(e.isSet());   
}

上面是它测试的对象,它在 setId(-1) 部分失败,这是通过创建新员工分配 ID 之前设置的默认值。

我的代码错了吗?我觉得它真的很小,但我就是看不到它!

提前致谢, 非常感谢任何输入!

【问题讨论】:

  • 如果设置了名称或 id 不是 -1,您现在返回 true。将&& 切换为||

标签: java boolean assertion


【解决方案1】:

如果设置了“名称和ID”,则需要返回true。如果 name 或 id 已设置,您的 if 语句将返回 true。试试这个:

public boolean isSet() {
    if (!name.equals("NOT SET") && id != -1)) {
        return true;
    } else {
        return false;
    }
}

【讨论】:

    猜你喜欢
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 2021-11-23
    相关资源
    最近更新 更多