用户输入数字对,直到输入 "quit",哨兵不工作?
user to enters pairs of numbers until they enter "quit", sentinel not working?
这是我要解决的问题:
编写一个程序,要求用户输入一对数字,直到他们输入 "quit"。在输入并验证每对数字后,使用函数添加数字。该函数将为一对数字提供两个参数,并将 return 总和。用户输入"quit"后,输出所有的数字对及其和。
当我只做一个时,我有输出数字 1、数字 2 和总和的程序,但是当我尝试重复直到用户输入时 "quit" 我似乎打破了它?
//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;
}
从概念上讲,您想这样做:
- 获取用户输入,
- 如果任何时候输入是"quit",则停止。 (哨兵检查)
- 执行加法运算,
- 输出,
- 重复。
对于第 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 的逻辑布尔运算符短路,这意味着如果第一个操作数不计算第二个操作数,则条件将为 false
&&
的操作数为 false,如果第一个操作数是 true
. ,则条件将为 true
而无需计算第二个操作数
- 人们通常会认为
0
在 JavaScript 中是错误的,这会导致 while 条件失败并且如果用户输入 0 则不起作用。但是在这种情况下,输入的来源是一个字符串,表达式 '0'
为真。
这是我要解决的问题: 编写一个程序,要求用户输入一对数字,直到他们输入 "quit"。在输入并验证每对数字后,使用函数添加数字。该函数将为一对数字提供两个参数,并将 return 总和。用户输入"quit"后,输出所有的数字对及其和。
当我只做一个时,我有输出数字 1、数字 2 和总和的程序,但是当我尝试重复直到用户输入时 "quit" 我似乎打破了它?
//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;
}
从概念上讲,您想这样做:
- 获取用户输入,
- 如果任何时候输入是"quit",则停止。 (哨兵检查)
- 执行加法运算,
- 输出,
- 重复。
对于第 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 的逻辑布尔运算符短路,这意味着如果第一个操作数不计算第二个操作数,则条件将为false
&&
的操作数为 false,如果第一个操作数是true
. ,则条件将为 - 人们通常会认为
0
在 JavaScript 中是错误的,这会导致 while 条件失败并且如果用户输入 0 则不起作用。但是在这种情况下,输入的来源是一个字符串,表达式'0'
为真。
true
而无需计算第二个操作数