Tengo este ejercicio de Javascript. El promedio debería ser 11,2, pero mi programa devolvió 5420502,4.
Defina una matriz vacía. También crea dos funciones:
addNumber() lee un valor de un campo de entrada de texto en el documento HTML (id="num") y lo agrega al final de la matriz.
printInfo() envía la cantidad de elementos en la matriz a la consola, luego el promedio de sus valores.
El documento HTML tiene dos botones para llamar a las funciones.
var arr = []; function addNumber() { var num = document.getElementById("num").value; return arr.push(num); } function printInfo() { var len = arr.length; console.log("The array has " + len + " elements."); var total = 0; for (var i = 0; i < len; i++) { total += arr[i]; // replace arr[i] with +arr[i] } var avg = total / len; // additionally render result to UI document.getElementById("info").innerText = avg; return console.log("The average of the values is " + avg); } .outerStyle { border: 2px solid black; width: 45%; } .inpStyle { padding: 10px; margin: 10px; } button { margin: 10px; } <div id="outer" class="outerStyle"> <div class="inpStyle"> <label for="num">Enter number: </label> <input id="num" type="number" /> </div> <button id="addBtn" onclick="addNumber()">Add</button> <button id="printInfo" onClick="printInfo()">Print Info</button> <hr/> <div id="info" /> </div>El valor de su entrada es una cadena. Entonces, se concatenará en total . Si su valor de entrada fue 1 y lo agregó a la matriz dos veces, su matriz consistiría en 2 cadenas, "1" y "1". Luego, estás agregando esto, lo que hace "11" porque estás sumando cadenas.
Primero querrá usar algo como parseInt para convertir la cadena en un número.
function addNumber() { var num = document.getElementById("num").value; return arr.push(parseInt(num)); }