如何才能将循环停止在+/- 10而不是停止在数字10?

时间:2018-10-29 20:31:09

标签: javascript loops

如下面的代码所示,我的循环将永远进行下去。

我希望程序通过使用增量和减量来根据用户说add还是subtract来获取用户输入的updown 10。

任何提示或帮助都将是惊人的!预先谢谢你。

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); 
		  
	  }
  }
}

2 个答案:

答案 0 :(得分:3)

第一个提示呼叫的结果不是数字,您必须使用+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();

答案 1 :(得分:2)

虽然您得到的答案可以满足您的需求,但我发现您有两个循环让我有些不满意。这是您可以单循环执行此操作的另一种方法(根据给定的方向存储乘数):

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();