找到可被6或7整除但不能同时整数的整数

Ibn*_*eed 2 java integer-division

我正在尝试编写一个程序,显示1到100之间的整数,可以被6或7整除但不能同时整数.

这是我的代码:

import acm.program.*;

public class Problem4 extends ConsoleProgram
{
    public void run()
    {
        for (int i = 1; i <= 100; i++)
        {
            boolean num = ((i % 6 == 0) || (i % 7 == 0));

            if (num == true)
            println(i + " is divisible");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码显示如下回答:6,7,12,14,18,21,24,28,30,35,36,42,48,49,54,56,60,63,66,70,72, 77,78,84,90,91,96,98

现在粗体数字42和84都是6和7的divisbile.现在如果我在上面的代码中更改了||to &&,结果只显示了42和84.

我应该做些什么改变才能从最终结果中删除这两个数字?

小智 19

XOR是要走的路.

import acm.program.*;

public class Problem4 extends ConsoleProgram {
  public void run() {
    for (int i = 1; i <= 100; i++) {
      if ( (i % 6 == 0) ^ (i % 7 == 0) ) {
        println(i + " is divisible");
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我想我会返回我的开发者许可证. (2认同)

cd1*_*cd1 8

你必须让你的情况看起来像:

boolean num = (i % 6 == 0 || i % 7 == 0) && !(i % 6 == 0 && i % 7 == 0);
Run Code Online (Sandbox Code Playgroud)

这基本上是将" 但不是两者 " 转换为Java代码:)

  • 您几乎可以将其翻译为单词:(可被6整除或7可被整除)和NOT(可被6整除并可被7整除) (4认同)
  • 为什么不使用XOR运算符"a ^ b",它相当于"(a || b)&&!(a && b)" (2认同)

duf*_*ymo 5

您需要额外检查"但不是两者".我认为它应该是:

boolean num =((i%6 == 0)||(i%7 == 0))&&(i%42!= 0);


use*_*421 5

你也可以试试

boolean num = ((i % 6 == 0) != (i % 7 == 0));
Run Code Online (Sandbox Code Playgroud)