这是我试图解决的问题: 编写一个程序,要求用户输入数字对,直到他们输入"退出"。输入并验证每对数字后,使用函数添加数字。该函数将为这对数字提供两个参数,并将返回总和。用户输入"退出"后,输出所有数字对及其总和。
我已经让程序输出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;
}
答案 0 :(得分:0)
从概念上讲,您希望这样做:
对于第1步,你大部分都在那里。考虑这个功能:
function getInput(msg) {
var value = prompt(msg);
if (value === QUIT_CODE) {
return false;
}
return value;
}
然后,您可以在while
条件下调用此函数,同时仍然将输入分配给number1
或number2
。
while ((number1 = getInput('Enter a number')) &&
(number2 = getInput('Enter another number'))) {
// convert and output
}
为什么这样做?
&&
,||
,即JavaScript的逻辑布尔运算符短路,这意味着如果{{1}的第一个操作数为false,则条件将为false
而不评估第二个操作数如果第一个操作数是&&
,则条件将为true
而不评估第二个操作数。true
在JavaScript中是假的,这会导致while条件失败并且如果用户输入0则不起作用。但是在这种情况下,输入的来源是一个字符串,并且表达式0
是真实的。