首页 > 解决方案 > 无法使用错误处理检测字符串并且无法使“For”循环工作

问题描述

我被赋予了以下任务:

您需要让用户给您一个整数。使用错误处理来检查用户是否提交了一个整数,如果不是,则显示错误消息。然后,使用 for 循环为用户提供该整数的前 100 个乘数。

我已经尝试解决这个问题好几个小时了,但我似乎无法正确解决大部分问题。这是我的代码:

<!DOCTYPE html>
<html>
  <head>
    <link rel="preconnect" href="https://fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@100&display=swap" rel="stylesheet">
    <title>Index_loop_1</title>
  </head>
  
  <body style = "background-color: #000000">
    <h1 id="ha" style="color:#ffffff ;font-family: 'Roboto', sans-serif ;text-align: center; font-size:250%; padding: 250px 0">a</h1>
    <script>
      var a = document.getElementById("ha")
      var m = "That is not a number!"
      var f = window.prompt("Type a number here:")
      
      try {
        f = Integer.parseInt("100");
      } catch(NumberFormatException) {
        a.innerHTML = m
        window.stop()
      }
      
      for (var q = f; q < 100; q *= q) {
        a.innerHTML += q
      }
    </script>
  </body>
</html>

任何帮助深表感谢。:D

标签: javascripthtml

解决方案


我不确定是否获得“前 100 个乘数”是我们在这里所做的(因为我们得到的是该数字 < 100 的平方),也许是“倍数”?

无论如何,不​​是为您解决这个问题的想法,而是代码问题:

  • 我们应该在这里使用 MDN DocsparseInt()不是。来自Java,而不是JavaScript。Integer.parseInt()Integer.parseInt
  • NumberFormatException也是一个Java特性。
  • 在里面try,我们将输入数字覆盖为 100。
  • 我鼓励你使用人类可读的变量名。

相同脚本的示例,但JavaScript方式和一些修复:

const error = "That is not a number!";
let factor = window.prompt("Type a number here:");
// Take integer part of factor, or NaN (not a number).
let factorInt = parseInt(factor);

if (isNaN(factorInt)) {
  console.log(error, factor);
} else if (factorInt > 1) {
  // If (factorInt <= 1) we get an infinite loop!
  for (let total = factorInt; total < 100; total *= total) {
    console.log(total);
  }
}


推荐阅读