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

问题描述 投票:1回答:2

如下面的代码所示,我的循环将永远继续。

我希望程序根据用户输入和addsubtract 10来判断updown是否使用增量和减量。

任何提示或帮助都会令人惊叹!先感谢您。

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); 
		  
	  }
  }
}
javascript loops
2个回答
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();

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();
© www.soinside.com 2019 - 2024. All rights reserved.