![](/img/trans.png)
[英]JavaScript:User enters numbers until he enters 0.Each numbers parity is determined and at the end,the total number of even and odd numbers is printed
[英]user to enters pairs of numbers until they enter “quit”, sentinel not working?
這是我要解決的問題:編寫一個程序,要求用戶輸入一對數字,直到他們輸入“退出”。 輸入並驗證每對數字后,使用函數添加數字。 該函數將有這對數字的兩個參數,並將返回總和。 用戶輸入“quit”后,輸出所有數字對及其總和。
我已經讓程序在我只做一個時輸出 number1、number2 和 sum,但是當我嘗試重復直到用戶輸入“退出”時,我似乎打破了它?
//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 步,您已經完成了大部分工作。 考慮這個函數:
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
,而不如果第一操作數是假用於評估第二個操作數&&
和條件將是true
不如果第一操作數是評估所述第二操作數true
。0
是 falsey,這會導致 while 條件失敗並且如果用戶輸入 0 則不起作用。但是在這種情況下,輸入的源是一個字符串,而表達式'0'
是真值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.