如下面的代码所示,我的循环将永远继续。
我希望程序根据用户输入和add
或subtract
10来判断up
或down
是否使用增量和减量。
任何提示或帮助都会令人惊叹!先感谢您。
function runprogram() {
var thenumber=prompt('Give me a number to increment or decrement!')
var updown=prompt('Should I increment it up or down?')
var thenumberup= (thenumber + 10)
var thenumberdown=(thenumber - 10)
var i;
if(updown == 'up') {
for(i = thenumber; i < 10; i++) {
alert(i);
}
}
if(updown == 'down') {
for (i = thenumber; i > 10 ; i--) {
alert(i);
}
}
}
第一个提示调用的结果不是数字,您必须使用+prompt('...')
将其强制转换为数字。
作为@Adrián mentioned in the comments,比较也应该是<=
和>=
,否则它将直接在目标数字之前停止。
function runprogram() {
var thenumber = +prompt('Give me a number to increment or decrement!')
var updown = prompt('Should I increment it up or down?')
var thenumberup = (thenumber + 10)
var thenumberdown = (thenumber - 10)
var i;
if (updown == 'up') {
for (i = thenumber; i <= thenumberup; i++) {
alert(i);
}
}
if (updown == 'down') {
for (i = thenumber; i >= thenumberdown; i--) {
alert(i);
}
}
}
runprogram();
虽然你得到了一个满足你需要的答案,但我觉得你有两个循环有点不满意。这是另一种方法,您可以使用单个循环(通过根据给定的方向存储乘数):
function run() {
var number = +prompt('number', 0)
var direction = prompt('up or down?', 'up')
var multiplier = direction === 'up' ? 1 : -1
for (var i = 0; i < 10; i++) {
alert(number + (i * multiplier));
}
}
run();