0

这是我要解决的问题:编写一个程序,要求用户输入成对的数字,直到他们输入“退出”。在输入和验证每对数字时,使用函数添加数字。该函数将为这对数字有两个参数,并将返回总和。用户输入“退出”后,输出所有数字对及其总和。

当我只做一个时,我有程序输出 number1,number2 和总和,但是当我尝试重复直到用户输入“退出”时,我似乎打破了它?

//function to sum 2 entered numbers
function sum2enteredNumbers(number1, number2) 
{
    var sum1and2;
    sum1and2 = number1 + number2;
    return sum1and2;
}


function exercise4Part1() {
    // PART 1: YOUR CODE STARTS AFTER THIS LINE
    var QUIT_CODE = "quit";
    var output;
    var number1;
    var number2;

    while (number1 !== QUIT_CODE || number2 !== QUIT_CODE)
    {
    number1 = Number(prompt("Enter a number:"));
    number2 = Number(prompt("Enter another number:"));     
    }


    sum1and2 = sum2enteredNumbers(number1, number2);

    output = document.getElementById('outputPart1');

    output.innerHTML = "<br />Entry 1: " + number1 + " Entry 2: " + number2 + " Sum: " + sum1and2;

}

尝试 2 - 仍然无法正常工作:

function sum2enteredNumbers(number1, number2) 
{
    var sum1and2;
    sum1and2 = number1 + number2;
    return sum1and2;
}


function exercise4Part1() {
    // PART 1: YOUR CODE STARTS AFTER THIS LINE
    var QUIT_CODE = "quit";
    var output;
    var number1;
    var number2;


    while (number1 !== QUIT_CODE && number2 !== QUIT_CODE)
    {
        number1 = prompt("Enter a number or \"quit\":");
        number2 = prompt("Enter another number or \"quit\":"); 
        if (number1 !== QUIT_CODE && number2 !== QUIT_CODE)
        {
         number1 = Number(number1);
         number2 = Number(number2);
        }
    }

    sum1and2 = sum2enteredNumbers(number1, number2);

    output = document.getElementById('outputPart1');

    output.innerHTML = "<br /> Entry 1: " + number1 + " Entry 2: " + number2 + " Sum: " + sum1and2;

}
4

1 回答 1

0

从概念上讲,您想要这样做:

  1. 获取用户输入,
    • 如果在任何时候输入是“退出”,则停止。(哨点检查)
  2. 执行加法运算,
  3. 输出,
  4. 重复。

对于第 1 步,您已经完成了大部分工作。考虑这个函数:

function getInput(msg) { 
    var value = prompt(msg); 
    if (value === QUIT_CODE) { 
         return false; 
    }
    return value; 
}

然后,您可以在while条件中调用此函数,同时仍将输入分配给number1or number2

while ((number1 = getInput('Enter a number')) &&
       (number2 = getInput('Enter another number'))) { 
    // convert and output 
}

为什么这行得通?

  • &&, ||,即 JavaScript 的逻辑布尔运算符短路,这意味着false如果第一个操作数为假&&,则条件将true不评估第二个操作数,如果第一个操作数为 ,则条件将不评估第二个操作数true
  • 人们通常会认为0JavaScript 中的 false 会导致 while 条件失败并且如果用户输入 0 则不起作用。但是在这种情况下,输入的源是字符串,并且表达式'0'是真实的。
于 2015-04-19T07:03:10.643 回答