2015-04-19 1 views
0

Вот проблема, которую я пытаюсь решить: Запишите программу, которая запрашивает у пользователя ввод пар чисел, пока они не войдут в «quit». Когда каждая пара чисел вводится и проверяется, добавьте числа, используя функцию. Функция будет иметь два параметра для пары чисел и вернет сумму. После ввода пользователем «quit» выведите все пары чисел и их суммы.пользователь вводит пары чисел до тех пор, пока они не войдут в «quit» - sentinal не работает?

У меня есть программа для вывода число1, number2 и суммы, когда я просто делаю это, но когда я пытаюсь повторить, пока пользователь не войдет в «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; 

} 
+1

Номер ("quit") будет равен NaN. – moveaway00

+0

Вы действительно хотите выйти только в том случае, если пользователь дважды вводит «quit»? Одного недостаточно? Если нет, используйте and = && вместо or = ||. –

+0

Как написать это для продолжения до ввода «quit»? while (isNaN (number1) || isNaN (number2)) { number1 = Number (prompt ("Введите число:")); number2 = Number (prompt («Введите другой номер:»)); } – jdogmcgee

ответ

0

Концептуально, вы хотите сделать это:

  1. Получить пользовательский ввод,
    • , если в любое время вход «quit», а затем остановится. (Проверка сторожевого)
  2. выполнить операцию сложения,
  3. выход,
  4. повтора.

Для шага 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 ошибочным в JavaScript, что приведет к тому, что условие while завершится с ошибкой и не будет работать, если пользователь ввел 0. Однако в этом случае источником ввода является строка, а выражение '0' является правдивым ,
+0

Надеюсь, что пользователь никогда не вводит 0 в качестве числа, так как он тоже ложный – moveaway00

+0

@ moveaway00 Я согласился и протестировал, и понял, что он фактически обрабатывает ситуацию, когда пользователь вводит 0, как вы могли бы ожидать (он входит в тело цикла). '0', поскольку строка не является ложной. – jdphenix

+0

Вы правы, конечно. Я забыл, что это будет строка. – moveaway00

Смежные вопросы

 Смежные вопросы