【问题标题】:It is not printing with the 2nd largest number using Array in Javascript它没有使用 Javascript 中的数组以第二大数字打印
【发布时间】:2017-08-14 03:04:55
【问题描述】:
    <!DOCTYPE html>
<html>
<head>
    <title>Find the 2nd Highest and Lowest</title>
    <script>
    function findthenum() {


        var num1 = parseFloat(document.findthenumber.num1.value);
        var num2 = parseFloat(document.findthenumber.num2.value);
        var num3 = parseFloat(document.findthenumber.num3.value);
        var num4 = parseFloat(document.findthenumber.num4.value);
        var num5 = parseFloat(document.findthenumber.num5.value);

        var myArray[num1, num2, num3, num4, num5];


        findsecondlargest(myArray);
    }

    function findsecondlargest(arr)
    {


    var fLargeNum = 0;
    var sLargeNum = 0;

    for(var i=0; i<arr.length; i++){
        if(fLargeNum < arr[i]){
            sLargeNum = fLargeNum;
            fLargeNum = arr[i];         
        }else if(sLargeNum < arr[i]){
            sLargeNum = arr[i];
        }
    }

    print(sLargeNum);

}
  function print(largenum){
    document.write(largenum);
  }




    </script>
</head>
<body>
<form method="post" name="findthenumber">
<p>Enter number 1:<input type="number" name="num1"></p>
<p>Enter number 2:<input type="number" name="num2"></p>
<p>Enter number 3:<input type="number" name="num3"></p>
<p>Enter number 4:<input type="number" name="num4"></p>
<p>Enter number 5:<input type="number" name="num5"></p>
<button type="submit" onclick="findthenum()">Submit</button>
</form>
</body>
</html>

我正在做的是用户将输入 5 个数字,该函数将使用数组找到第二大数字,但它不打印。

我在将用户输入传递给数组时遇到问题。我不太确定这样做是否正确“var myArray[num1, num2, num3, num4, num5];”

【问题讨论】:

  • 应该是var myArray = [num1, num2, num3, num4, num5];。 (我没有费心检查你的实际算法。)
  • 让 myArray = [num1, num2, num3, num4];

标签: javascript


【解决方案1】:

使用等号将值分配给您的数组:

var myArray = [num1, num2, num3, num4, num5];

【讨论】:

    【解决方案2】:

    你可以这样设置你的数组:

    var myArray = [num1,num2,num3,num4,num5];
    

    link 将帮助您了解声明数组。

    【讨论】:

      【解决方案3】:

      在这一行:

      var myArray[num1, num2, num3, num4, num5];
      

      您没有定义数组。为此,请在变量的名称和值之间使用等号。

          function findthenum() {
      
      
              var num1 = parseFloat(document.findthenumber.num1.value);
              var num2 = parseFloat(document.findthenumber.num2.value);
              var num3 = parseFloat(document.findthenumber.num3.value);
              var num4 = parseFloat(document.findthenumber.num4.value);
              var num5 = parseFloat(document.findthenumber.num5.value);
      
              var myArray = [num1, num2, num3, num4, num5];
      
      
              findsecondlargest(myArray);
          }
      
          function findsecondlargest(arr){
             var fLargeNum = 0;
             var sLargeNum = 0;
         
             for(var i=0; i<arr.length; i++){
                 if(fLargeNum < arr[i]){
                     sLargeNum = fLargeNum;
                     fLargeNum = arr[i];         
                 }else if(sLargeNum < arr[i]){
                     sLargeNum = arr[i];
                 }
             }
      
             print(sLargeNum);
      
          }
          function print(largenum){
               alert(largenum);
          }
      <body>
      <form method="post" name="findthenumber">
      <p>Enter number 1:<input type="number" name="num1"></p>
      <p>Enter number 2:<input type="number" name="num2"></p>
      <p>Enter number 3:<input type="number" name="num3"></p>
      <p>Enter number 4:<input type="number" name="num4"></p>
      <p>Enter number 5:<input type="number" name="num5"></p>
      <button type="submit" onclick="findthenum()">Submit</button>
      </form>
      </body>

      作为更通用的解决方案,我添加了一个冒泡排序函数来查找数组的任何位置。

          function findthenum() {
      
      
              var num1 = parseFloat(document.findthenumber.num1.value);
              var num2 = parseFloat(document.findthenumber.num2.value);
              var num3 = parseFloat(document.findthenumber.num3.value);
              var num4 = parseFloat(document.findthenumber.num4.value);
              var num5 = parseFloat(document.findthenumber.num5.value);
              var pos = parseFloat(document.findthenumber.pos.value);
      
              var myArray = [num1, num2, num3, num4, num5];
      
      
              findByIndex(myArray, pos);
          }
      
          function findByIndex(arr, pos){
              bubbleSort(arr);
              alert(arr[pos]);
          }
      
          function bubbleSort(a){
              var swapped;
              do {
                  swapped = false;
                  for (var i=0; i < a.length-1; i++) {
                      if (a[i] > a[i+1]) {
                          var temp = a[i];
                          a[i] = a[i+1];
                          a[i+1] = temp;
                          swapped = true;
                      }
                  }
              } while (swapped);
          }
      <body>
      <form method="post" name="findthenumber">
      <p>Enter number 1:<input type="number" name="num1"></p>
      <p>Enter number 2:<input type="number" name="num2"></p>
      <p>Enter number 3:<input type="number" name="num3"></p>
      <p>Enter number 4:<input type="number" name="num4"></p>
      <p>Enter number 5:<input type="number" name="num5"></p>
      <p>Position:<input type="number" name="pos"></p>
      <button type="submit" onclick="findthenum()">Submit</button>
      </form>
      </body>

      请注意,我们从 0 开始计数,作为数组索引。

      【讨论】:

      • 谢谢先生!但是你能帮我吗,因为在这段代码中。当找到第二小的数字时。当我改变数组的内部时。它显示为零
      • 我不明白你的问题。你能说得更具体点吗?
      猜你喜欢
      • 2023-02-19
      • 2021-02-23
      • 2023-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 2020-02-25
      相关资源
      最近更新 更多