布尔值和断言

时间:2019-01-28 09:40:49

标签: java conditional-statements assertion

我有以下方法,如果第一个数字大于第二个数字,则返回true:

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中的?,但是无论我尝试了多少,我似乎都无法获得正确的语法。你能帮忙吗?

4 个答案:

答案 0 :(得分:3)

首先,

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

  

断言语句有两种形式。第一种更简单的形式是:

     

assert Expression1 ;

     

其中Expression1是布尔表达式。什么时候   系统运行该断言,它评估Expression1,如果是   false会引发AssertionError,而不会显示详细信息。

boolean的否定也是布尔表达式,因此!actual对声明有效。

答案 1 :(得分:1)

实现和断言都可以简化:

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

       boolean result = x1 > x2;
        return result;
    }

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

答案 2 :(得分:0)

我相信他们指的是

assert(!actual);

答案 3 :(得分:0)

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

此实现中有什么问题?

声明将如下:

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