2015-04-19 29 views
0

这是我试图解决的问题: 编写一个程序,要求用户输入数字对直到他们进入“退出”。随着每对数字的输入和验证,请使用函数添加数字。该函数将有两个数字对的参数,并将返回总和。用户进入“退出”后,输出所有的数字对和他们的总和。用户输入数字对直到他们进入“退出” - sentinal不工作?

我有计划输出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; 

} 
+1

数字(“退出”)将等于NaN。 – moveaway00

+0

只有当用户输入“退出”两次时,您是否真的要退出?一次还不够?如果不是,请使用和= &&而不是或= ||。 –

+0

如何输入以继续输入“quit”? (isNaN(number1)|| isNaN(number2)) { number1 = Number(prompt(“Enter a number:”)); number2 =数字(提示(“输入另一个数字:”)); } – jdogmcgee

回答

0

从概念上讲,要做到这一点:

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

对于第1步,你大部分是那里的方式。考虑一下这个功能:

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

,您可以调用在while条件这一功能,同时还分配输入number1number2

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

为什么这样吗?

  • &&||,即JavaScript的逻辑布尔运算符短路,这意味着条件将是false而不如果第一操作数是假用于&&评估第二操作数,并且所述条件将是true不评估所述第二操作数如果第一个操作数是true
  • 通常人们会认为0在JavaScript中是falsey,如果用户输入0,将导致while条件失败并失效。但是在这种情况下,输入源是一个字符串,并且表达式'0'是truthy 。
+0

只希望用户永远不要输入0作为数字,因为它也是错误的 – moveaway00

+0

@ moveaway00我同意并测试了,并且意识到它实际上处理了用户输入0的情况,您可能会预期它会进入循环体。作为一个字符串的'0'不是错误的。 – jdphenix

+0

当然,你是对的。我忘了它仍然是一个字符串。 – moveaway00

相关问题