在For循环上乘以整数

时间:2016-06-22 12:32:12

标签: javascript types type-conversion iteration multiplication

在这里开始JavaScript学习者......

我正在通过Adrian Neumann的Simple Programming Problems工作,我的问题是关于小学练习中的第6位。

  

编写一个程序,要求用户输入一个数字n,并让他可以选择计算总和并计算1,...,n的乘积。

// var myArray = []; // for testing
var mySum = 0;
var userNum = prompt("What is your number? ");
var userChoice = prompt("Would you like to add up (+) or multiply (*) all the numbers from 1 to your number? Please enter (+) or (*): ");

if (userChoice == "+") {
    for (var i = userNum; i > 0; i--) {
        mySum += +i;
    }
    console.log("Your answer is " + mySum);
} else if (userChoice == "*") {
    for (var i = userNum; i > 0; i--) {
        mySum *= +i;
        // myArray.push(i); // for testing
    }
    console.log("Your answer is " + mySum);
    // console.log(myArray); // for testing
}

输入乘法值时,答案始终为0。显然,我认为0被包含在迭代中,所以我设置了一个空数组myArray,并使用myArray.push(i);将所有数字推送到数组... 0从未作为数组中的值包含在内。

除了一些明显的表格验证考虑因素外,有人能告诉我我缺少什么吗?为什么我的答案总是0

注意:代码的sum部分似乎运行得非常出色。

请注意我是JavaScript的 beginniner ,所以如果你想发表评论,请告诉我为什么你改变代码的方式,而不是简单地将代码吐回给我。这是一个很大的帮助,谢谢。

2 个答案:

答案 0 :(得分:0)

在乘法之前,您没有将mySum设置为10*i = 0。

答案 1 :(得分:0)

好吧,您将mySum初始化为0,因此在循环的每次迭代中,您将i乘以零,并将结果(再次,零)保存回{{1 }}。对于乘法,你必须从一开始。