繁体   English   中英

从提示中接受整数,而不是小数

[英]Accept whole numbers from prompt, not decimals

我的代码工作正常,但我不希望它也接受小数

var choice = parseInt(prompt("Please enter 1 , 2 or 3:"));
if (choice == 1) {
  var choice = 1
} else if (choice == 2) {
  var choice = 2
} else if (choice == 3) {
  var choice = 3
} else if (choice > 3) {
  var choice = 3
  document.write("<p>Please enter 1 , 2 , or 3:</p>")
} else if (choice < 1) {
  var choice = 3
  document.write("<p>Please enter 1 , 2 , or 3:</p>")
}

prompt 只需要两个属性,message 和 default。

请注意,结果是一个字符串。 这意味着您有时应该转换用户给定的值。 例如,如果他们的答案应该是数字,则您应该将该值转换为数字。 参考: https : //developer.mozilla.org/en-US/docs/Web/API/Window/prompt

我不认为我们可以提示只将数字或更具体的实数作为输入。

您可以使用!Number.isInteger(+choice)+一元加号

此外,您的代码可能看起来工作正常,但它只会防止一次错误输入。 例如,如果您尝试键入0两次,它将接受它。 相反,您需要某种循环 用于此的典型循环是do...while 循环 我在下面创建了一个示例。

 let choice = 0 do { choice = prompt('Please enter 1, 2, or 3:') } while (choice > 3 || choice < 1 || !Number.isInteger(+choice)) const intChoice = parseInt(choice) console.log(intChoice)

为了使其更可重用,我建议也用function包装一些逻辑。 (下面例子中的箭头函数只是我的偏好)

 const intPrompt = () => { let choice = 0 do { choice = prompt('Please enter 1, 2, or 3:') } while (choice > 3 || choice < 1 || !Number.isInteger(+choice)) return parseInt(choice) } console.log(intPrompt())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM