Я хотел создать массив с длиной, зависящей от ввода пользователя, а затем попытался найти сумму всех чисел в массиве

<!DOCTYPE html>
<html>
    <body>
        <script>
            var cases=prompt("number of ingredients");
            var i=0;
            var a=[];
            while (i<cases){
                i=i+1;
                var cost=prompt("cost of this ingredient");
                a.push(cost);
            }
            alert(a);
            var t=a.length;
            var sum=0;
            var j=0;
            while (j<t-1){
                var sum=sum+a[j];
                j=j+1;
            }
            alert(sum);
        </script>
    </body>
</html>

Хотите создать массив в зависимости от ввода пользователя в "случаях". Затем попытался найти сумму всех чисел в массиве "а". Но это не дает мне ответ. В чем дело? Помощь приветствуется.

2 ответа

Решение

Вы должны проанализировать входные данные в целое число, иначе оно будет рассматриваться как строка. Также вам нужен узел, чтобы объявить переменную суммы дважды. Переменная t тоже не нужна.

<!DOCTYPE html>
<html>
<body>
    <script>
        var cases=prompt("Number of ingredients");
        var i = 0;
        var a = [];
        while (i < cases){
        var cost = prompt("Cost of this ingredient");
        a[i] = parseInt(cost);
            i = i + 1;
        }
        var sum=0;
        var j=0;
        while (j < a.length){
            sum=sum+a[j];
            j=j+1;
        }
        alert(sum);
    </script>
</body>

Оптимизированная версия:

var cases = parseInt(prompt("number of ingredients")), a = [], cost = 0;
while (cases--) {
  var cost = prompt("cost of this ingredient");
  a.push(parseInt(cost,10));
}
alert(a);

var len = a.length, sum = 0;
while (len--) {
  sum += a[len];
}
alert(sum);
Другие вопросы по тегам