簡體   English   中英

用戶輸入成對數字直到他們輸入“退出”,哨兵不起作用?

[英]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. 獲取用戶輸入,
    • 如果在任何時候輸入是“退出”,則停止。 (哨兵檢查)
  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
  • 人們通常會認為 JavaScript 中的0是 falsey,這會導致 while 條件失敗並且如果用戶輸入 0 則不起作用。但是在這種情況下,輸入的源是一個字符串,而表達式'0'是真值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM