支票号码是另一个号码的倍数

时间:2013-07-19 05:45:13

标签: java

我正在使用使用余数运算符,数字是另一个的倍数。如果第一个数字是3,第二个数字是15那么

if (3 % 15 == 0) {

}

然后它起作用(不进入if)。但是现在如果第一个数字是3而第二个数字是4000那么它不起作用条件仍然是真的

if (3 % 4000 == 0) {

}

这里不应该进入案例。但这里的条件是真的。为什么会这样?

5 个答案:

答案 0 :(得分:5)

如果你仔细测试你的程序,你会发现if语句的正文都没有执行。

原因是你有%错误的方式来论证。

if应为:

if (4000 % 3 == 0) {

%运算符返回将第一个参数除以 second 的剩余部分。

答案 1 :(得分:0)

modulo division将返回a / b的剩余部分(除以b)

所以这里3%15和3%4000等于3

答案 2 :(得分:0)

你不能用较小的数字划分小数字或余数。你有

if(3 % 4000==0){}

因此,在进行此类操作之前,您可以使用一种方法并向其传递2个数字,这将首先检查第一个数字是大于还是小于数字,而不是相应的数字。 即。

    //you may change the return type.
    void multiple(int a, int b)
    {
      if(a>b)
      {
         if(a % b == 0)
         {
           //TO DO Code here
         }   
      }
      else
      {
         if(b%a==0)
        {
          //TO DO Code here    
        }
     }
    }

答案 3 :(得分:0)

它适用于每个值,其余的将始终为3,因此'if'将不会执行。如果你想用0来检查,写“if”的更好方法是,

if (!(3 % 4000)){
    // Code to execute
}

在这种情况下,它仅在存在余数0时执行。并且还使用变量类型检查一次。

一种可能性是,如果将其声明为signed short int(0到127)并将4000存储到它,则会发生溢出,并且变量值将设置为minimum(即零(0))。因此,在您的情况下,它执行'if'。只是为了给你一个想法。

答案 4 :(得分:0)

当%b == 0时,如果a>> = b

,则a是b的倍数

表示< b,a永远不会是倍数b,除非它是零