简单的编程实践(使用模数op)

时间:2017-12-04 10:20:42

标签: java logic logical-operators

第一个问题,我正在尝试做一个练习,如果给定的非负数是3或5的倍数,我会被要求返回true,但不是两者都有。例子是;

old35(3)→true

old35(10)→true

old35(15)→false

所以3会是真的,因为它是3的倍数,但我目前无法让我的代码适用于所有实例。以下代码;

public boolean old35(int n) {
     if ((35 % n == 3) || (35 % n == 5))
        return true;
     return false;
}

我怎么能编辑它以符合练习告诉我要做的标准? >

2 个答案:

答案 0 :(得分:0)

您可以使用条件的逻辑异或。基本上你可以做C1 ^ C2。 编辑:要检查3个中的多个是否必须检查n % 3 == 0,对于5的倍数检查相同。

答案 1 :(得分:0)

我会详细解释一下。首先,使用余数符号检查余数为零的条件;

n % 3 == 0

n % 5 == 0

然后根据您的条件进行一对一的翻译,将它们组合在一起:

((n % 3 == 0) || (n % 5 == 0)) // Multiple of 3 or 5

!((n % 3 == 0) && (n % 5 == 0)) // But not both

将它们加在一起;

public static boolean old35(int n) {
  return(((n % 3 == 0) || (n % 5 == 0)) && !((n % 3 == 0) && (n % 5 == 0)));
}

但简单地说,你正在做的是XOR(^)操作,下面的代码是有效和简单的:

public static boolean old35(int n) {
  return((n % 3 == 0) ^ (n % 5 == 0));
}