我有以下方法,如果第一个数字大于第二个数字,则返回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中的?,但是无论我尝试了多少,我似乎都无法获得正确的语法。你能帮忙吗?
答案 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 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;