布尔值和断言

Boolean Values and Assertions

我有以下方法,如果第一个数字大于第二个数字,returns 为真:

static boolean firstGreaterSecond(int x1, int x2) {
    boolean result;
    if (x1 > x2) {
        result = true;
    } else {
        result = false;
    }
    return result;
  }

我添加了以下断言:

    actual=MyClass.firstGreaterSecond(10,11);
    assert false==actual;

我被告知可以用 1 个字符替换 false==。我认为他们可能指的是 ?,如 explained here 中所示,但无论我尝试了多少,我似乎都无法获得正确的语法。你能帮忙吗?

我相信他们指的替代方案是

assert(!actual);

首先,

static boolean firstGreaterSecond(int x1, int x2) {
    boolean result;
    if (x1 > x2) {
        result = true;
    } else {
        result = false;
    }
    return result;
  }

可以改写为:

static boolean firstGreaterSecond(int x1, int x2) {
    return x1 > x2;
}

其次,您应该能够:

actual=MyClass.firstGreaterSecond(10,11);
assert !actual;

看看assert docs

The assertion statement has two forms. The first, simpler form is:

assert Expression1 ;

where Expression1 is a boolean expression. When the system runs the assertion, it evaluates Expression1 and if it is false throws an AssertionError with no detail message.

boolean 表达式的否定也是一个布尔表达式,因此 !actual 对断言有效。

boolean firstGreaterSecond(int x1, int x2) {
     return  (x1>x2)?true:false;
      }

这个实现有什么问题??

断言如下:

actual=MyClass.firstGreaterSecond(10,11);
assert !actual;

实现和断言都可以简化:

private static boolean firstGreaterSecond(int x1, int x2) {

       boolean result = x1 > x2;
        return result;
    }

actual=MyClass.firstGreaterSecond(10,11);
assert !actual;