【问题标题】:What is the best way to make a prompt into an integer in JS?在 JS 中将提示转换为整数的最佳方法是什么?
【发布时间】:2020-03-16 21:31:37
【问题描述】:

我正在编写一个程序来执行“俄罗斯数学”(使用上面的 numberphile youtube 视频作为算法的基础)。有用。但是,为了“证明”它有效,我让用户能够尝试使用自己的数字作为输入。
当我自己为变量分配数字时,它可以正常工作。但是,当我在一个变量上使用提示符var numberOne = prompt('What is the first number you want to multiply?');(另一个变量由我自己分配)时,它可以工作。但是,一旦我提示用户输入这两个数字,它就不起作用了。大概是因为对字符串执行操作(乘以整数)时可以将字符串转换为整数,但是当两者都是字符串时,它似乎不起作用。
添加另一行以使用 parse 将提示变量重置为整数似乎太多了。

var numberOne = prompt('What is the first number you want to multiply?');
var numberTwo = prompt('What is the second number you want to multiply?');
var numberOneInt = parseInt(numberOne);
var numberTwoInt = parseInt(numberTwo);

这真的是最好的方法吗?

【问题讨论】:

  • 您发布的内容应该可以正常工作。

标签: javascript integer


【解决方案1】:

对于提示,是的,这几乎就是您想要做的。提示返回一个字符串,所以你需要转换它。还有其他方法,即Number(numberOne),但parseInt 很好。它们的行为略有不同,但对于您的情况,它们基本相同。 (parseInt 在第一个非数字处停止解析,而 Number 类型转换尝试转换整个事物)。

感谢找出将一个字符串和一个 int 相乘的边缘行为。

通常,大多数开发人员更喜欢在页面上使用输入而不是提示。提示的问题在于它们会中断用户对页面的控制。作为奖励,您可以通过输入设置 type=number 以在某些设备上为用户提供数字控制并将输入限制为实际数字。

编辑

我从不使用提示,所以我正在阅读它们。需要注意的一件事是,如果用户点击转义,它会返回 null,这可能会破坏您的代码。您可以通过首先检查它来防止这种情况,即if(numberOne){ ... }

【讨论】:

  • 所以,这行得通。谢谢你。我试图确保我在这个程序中使用某些东西。例如,白名单、黑名单。所以,如果我知道我可以使用输入来设置类型,我不确定我会在哪里使用这些。不过,我将考虑改用输入重写。我总是可以在其他程序中使用它们。
猜你喜欢
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-19
  • 2016-05-29
  • 2012-02-29
  • 1970-01-01
相关资源
最近更新 更多