确定奇数/偶数,并在Javascript中使用While循环从计数器添加

确定奇数/偶数,并在Javascript中使用While循环从计数器添加,javascript,loops,while-loop,sum,Javascript,Loops,While Loop,Sum,我不知道为什么在满足条件后它会停止循环,例如,从它前面的位置得到数字的和。我相信代码有问题。它在哪里 var init = parseInt(prompt('enter an odd or even no.')); var sec = init%2; if (sec != 0) { var loop = 5; while (loop < 10) { var num = 1; loop += loop; num +=

我不知道为什么在满足条件后它会停止循环,例如,从它前面的位置得到数字的和。我相信代码有问题。它在哪里

var init = parseInt(prompt('enter an odd or even no.'));
var sec = init%2;

if (sec != 0) {
    var loop = 5;   
    while (loop < 10) {
        var num = 1;
        loop += loop; 
        num += 2
    }
    document.write(num);
} else {
    document.write('None');
}   

循环正在发生,但你只是看不到它,因为它循环时你没有打印任何东西

您的代码应该是这样的:

var init = parseInt(prompt('enter an odd or even no.'));
var sec = init%2;

if (sec != 0) {
    var loop = 5;   
    while (loop < 10) {
        var num = 1;
        loop += loop; 
        num += 2
        document.write(num);
    }

} else {
    document.write('None');
} 
请参阅document.writenum现在位于您的循环中,因此它将在每次循环时打印

以前,它是在外部设置的,因此本质上,您只看到上次迭代后的结果。

您需要在while语句外部使用1初始化num,因为您为每个循环分配了这个值

我建议在代码顶部预先声明所有变量。您也可以在此处指定已知值

var init=parseIntprompt'输入奇数或偶数',10, 秒=初始化%2, 循环=5, num=1; 如果秒!=0 { 而回路<10{ 循环+=循环; num+=2; } document.writenum; }否则{ 文件。写“无”;
} 这就是你想做的吗?用var声明的变量没有块作用域,因此在代码顶部声明它们会更清晰

var init=parseIntprompt'输入奇数或偶数'; var sec=init%2; var循环=5; var-num=1; ifsec!=0 { whileloop<10{ num+=2; loop++; document.writenum; } }否则{ 文件。写“无”;
}parseInt1??您期望什么,代码应该做什么?您试图用循环和循环中的算法实现什么?这些代码的唯一结果可能是无或无3@ScottMarcus你是怎么做到的?我在控制台中运行它,得到了3。这不是问题所在。请看我的答案。@ThalesMinussi这是个问题。这要看情况而定。OP认为它没有循环。但事实确实如此。不管他的循环逻辑是否被破坏,那都是另一回事了。@ThalesMinussi你的答案是一个假设,Nina的是一个实际的语义修复。这是否是OP想要实现的是另一个问题。我不知道为什么它在满足条件后停止循环。对我来说,这听起来不像是一个假设。对我来说,OP明确说明它停止循环,但没有说明原因。你说得对,这正是我遇到的问题。但是,如何在每次迭代时得到这些数字的和呢?假设我应该得到的总数应该是35。@JpMC如果运行Scott的代码,它现在应该做您期望的事情,因为Scott删除了num=parseInt1。相反,他现在在每一次互动中累积2,我们相信这是你想要表达的。逻辑上但是,它只打印357911号,这是因为您在同一行中打印所有内容。但它正在积累。仔细看:3-5-7-9-11是的,我现在知道了。环路5