Java 如何用另一种方法计算模量,而不是使用while循环?

Java 如何用另一种方法计算模量,而不是使用while循环?,java,Java,您应该消除循环,因为a可能比b大得多,这将导致循环的多次迭代 public static int compareAndReturn(int a, int b) { while (a > b) { a -= b; } return a; } 我相信你的代码片段只是一种手工计算模或余数的方法,当a除以b时。您的方法可以重写为: public static int compareAndReturn(int a, int b) { ret

您应该消除循环,因为
a
可能比
b
大得多,这将导致循环的多次迭代

public static int compareAndReturn(int a, int b)
{
    while (a > b)
    {
        a -= b;
    }
    return a;
}

我相信你的代码片段只是一种手工计算模或余数的方法,当
a
除以
b
时。您的方法可以重写为:

public static int compareAndReturn(int a, int b) { 
    return a % b == 0 ? b : a % b;
}

这是家庭作业吗?思考如何计算结果以及如何缩短代码。
a
b
都是非负的吗?
modulo
阅读相关内容。你会得到一个更好的主意。这段代码不计算模,循环条件应该是
,而(a>=b)
。哈,我没有这样想+1如果我通过了compareAndReturn(100,5),则此代码不起作用,但如果compareAndReturn(100,6)则会通过@theSecretCoder是否确实正确复制了此方法?这是一个常见的面试问题,while条件通常是
while(a>=b)
@TheCretCoder你所说的“如果我通过了compareAndReturn(100,5)”是什么意思?如果该方法旨在“计算模量”(如您在标题中所说),那么它应该返回
0
,此方法返回,但您的方法不返回,除非您将其更改为
,而(a>=b)
,如Tim刚才所说。如果您希望代码返回
5
,那么它不是在“计算模数”。根据TIM代码,它在while(a>=b)时有效,但在while(a>b)时有效,所以返回a%b==0?b:a%b;工作正常。如果我通过了compareAndReturn(100,5),则此代码不起作用,但如果通过了compareAndReturn(100,6),则此代码将通过@TheCretCoder是的,如果a可被b整除,则需要进行调整。我来编辑。
public static int compareAndReturn(int a, int b) { 
    return (a <= b) ? a : a % b == 0 ? b : a - (a/b) * b;
}
public static int compareAndReturn(int a, int b) { 
    return a % b == 0 ? b : a % b;
}
public static int compareAndReturn(int a, int b) {
    return a % b;
}