我无法使用while循环解决数学问题

时间:2019-08-10 07:57:15

标签: javascript while-loop

数学问题说: 编写一个程序,您可以在其中插入1到100之间的一个正数。当插入一个超出范围的数字时,应该出现错误消息,并且应该插入另一个数字。

这是我尝试的代码:

function solve(input) {
  let number = (input.shift());

  while (number < 1 || number > 100) {
    console.log('Invalid number.');
    number = Number(input.shift());
  }
  
  console.log(`The number is: ${number}`)
}

solve(['35', '105', '0', '-200', '77'])

最终结果应该是:

35
The number is: 35
105
Invalid number!
0
Invalid number!
-200
Invalid number!
77
The number is: 77

2 个答案:

答案 0 :(得分:1)

您需要获取所有值并检查undefined

function solve(input) {
    let number = input.shift();

    while (number !== undefined) {
        if (number < 1 || number > 100) {
            console.log('Invalid number.');
        } else {
            console.log(`The number is: ${number}`)
        }
        number = input.shift();
    }
}

solve(['35', '105', '0', '-200', '77'])

答案 1 :(得分:0)

  

当前仅console.logs数字是:35,仅此而已。 ?

仅打印一次,因为第一个数字本身的number < 1 || number > 100条件失败,


您可以简单地做的是,初始化一个counter并使其值等于input.length-1,检查input中各个索引处的值,如果超出范围则显示无效,否则只需打印数字,每次在循环结束时将计数器减1

function solve(input) {
  let i = input.length - 1
  while (i >= 0) {
    if (input[i] < 1 || input[i] > 100) {
      console.log('Invalid number.', `The number is: ${input[i]}`);
    } else {
      console.log(`The number is: ${input[i]}`)
    }
    i--
  }
}
solve(['35', '105', '0', '-200', '77'])