我写了一段简单的代码-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%divisor0进行比较。

07-24 15:14