2017-08-14 45 views
1
<!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个号码和功能将使用阵列发现的第二大数目,但它不打印。它不与第二大数量的Javascript

我有一个问题,将用户输入传递给数组。我不是很肯定,如果我做这样 “变种myarray的[NUM1,NUM2,NUM3,num4,num5];” 正确的事情

+1

它应该是'var myArray = [num1,num2,num3,num4,num5];'。 (我没有检查你的实际算法。) – nnnnnn

+0

let myArray = [num1,num2,num3,num4]; – tibetty

回答

0

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

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

你可以设置你的阵列是这样的:

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

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

0

在这一行:

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开始,因为数组索引。

+0

谢谢先生!但是,你能帮助我,因为在这个代码中。找到第二低的数字。当我改变数组的内部。它显示零 – Robert

+0

我不明白你的问题。你可以说得更详细点吗? – JulianSoto