Javascript 我是否正确理解逻辑AND的工作方式?

Javascript 我是否正确理解逻辑AND的工作方式?,javascript,logical-operators,Javascript,Logical Operators,我有一个简单的家庭作业:写一个脚本,打印从1到N的所有数字,这些数字不能同时被3和7整除 所以,这是我的解决方案。它的工作方式是打印所有被3或7除的数字,而不是3和7。请帮助我理解为什么这不是我需要的工作。代码如下: <!DOCTYPE html> <html> <head> <title>Loops - Task 2</title> <link href="js-console.css" rel="stylesheet"

我有一个简单的家庭作业:写一个脚本,打印从1到N的所有数字,这些数字不能同时被3和7整除

所以,这是我的解决方案。它的工作方式是打印所有被3或7除的数字,而不是3和7。请帮助我理解为什么这不是我需要的工作。代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>Loops - Task 2</title>
<link href="js-console.css" rel="stylesheet" />
</head>
<body>
    <label for="input_num">Start: </label>
    <input type="text" id="input_num" />

    <a href="#" id="btn" onclick="printNums()">Print numbers</a>

    <div id="js-console"></div>              
    <script src="js-console.js"></script>
    <script>
        var input_num;
        var counter;
        function printNums(){
            input_num = jsConsole.readInteger("#input_num");
            for (counter=1; counter<=input_num; counter++){
                if(counter % 3 !=0 && counter % 7 != 0){
                    jsConsole.writeLine(counter);
                }
              }
    }
    </script>
</body>
</html>

循环-任务2
开始:
变量输入数量;
var计数器;
函数printNums(){
input_num=jsConsole.readInteger(“#input_num”);
用于(计数器=1;计数器
应该是:

if (!( (counter % 3) ==0 && counter % 7 ==0))

或者只需使用21提示…

就可以被两者整除,使用mod 21将返回0。这显示在21、42、63等中

如果(计数器%21!=0){

编辑

<!DOCTYPE html>
<html>
<head>
    <title>Loops - Task 2</title>
<link href="js-console.css" rel="stylesheet" />
</head>
<body>
    <label for="input_num">Start: </label>
    <input type="text" id="input_num" />

    <a href="#" id="btn" onclick="printNums()">Print numbers</a>

    <div id="js-console"></div>              
    <script src="js-console.js"></script>
    <script>
        var input_num;
        var counter;
        function printNums(){
            input_num = jsConsole.readInteger("#input_num");
            for (counter=1; counter<=input_num; counter++){
                if(counter % 21 != 0){
                    jsConsole.writeLine(counter);
                }
              }
    }
    </script>
</body>
</html>

循环-任务2
开始:
变量输入数量;
var计数器;
函数printNums(){
input_num=jsConsole.readInteger(“#input_num”);
用于(计数器=1;计数器
如果(计数器%3!=0&&计数器%7!=0)

这意味着,若数字可以除以3,则计数器%3!=0
为假,所以条件为假。 (与7相同)。

“不能同时被3和7整除”是指

或者,如果我们申请:


如果我对作业理解正确,您希望打印出的数字不会被3和7除,但可以被其中一个除或不被任何一个除。即3和7会打印出来,因为它们可以被一个除,但不能被另一个除,但21不会打印,因为它被两个除

在这种情况下,逻辑应如下所示:


if(!((计数器%3)==0&&(计数器%7)==0))

也称为fizzbuzz测试。因此它们不能被21整除:-)这不起作用,可能是因为我不理解mod。我应该用
if(计数器%3!=0&&counter%7!=0){
替换为
if(计数器%21!=0){
?布尔逻辑的很好的使用:D
<!DOCTYPE html>
<html>
<head>
    <title>Loops - Task 2</title>
<link href="js-console.css" rel="stylesheet" />
</head>
<body>
    <label for="input_num">Start: </label>
    <input type="text" id="input_num" />

    <a href="#" id="btn" onclick="printNums()">Print numbers</a>

    <div id="js-console"></div>              
    <script src="js-console.js"></script>
    <script>
        var input_num;
        var counter;
        function printNums(){
            input_num = jsConsole.readInteger("#input_num");
            for (counter=1; counter<=input_num; counter++){
                if(counter % 21 != 0){
                    jsConsole.writeLine(counter);
                }
              }
    }
    </script>
</body>
</html>
!(x % 3 == 0 && x % 7 == 0)
x % 3 != 0 || x % 7 != 0