我写了一段简单的代码-ceil1
。由于重写相同的代码后我的测试用例失败-ceil
起作用。
public class Test {
public static void main(String args[]){
System.out.println(ceil(3, 2)); //getting 2
System.out.println(ceil1(3, 2)); //getting 1
}
public static int ceil(int dividend, int divisor){
int a = dividend/divisor;
int b = dividend%divisor == 0 ? 0:1;
return a+b;
}
public static int ceil1(int dividend, int divisor){
return dividend/divisor + dividend%divisor == 0 ? 0:1;
}}
我不能指望这两者之间有什么区别?
可能导致此麻烦的中间计算/运算符优先级。
最佳答案
在
return dividend/divisor + dividend%divisor == 0 ? 0:1;
加法
dividend/divisor + dividend%divisor
执行,然后将结果与0进行比较。
你要:
return dividend/divisor + (dividend%divisor == 0 ? 0:1);
要么
return dividend/divisor + (dividend%divisor == 0) ? 0:1;
为了仅将
dividend%divisor
与0
进行比较。