2017-01-03 8 views
0

Я пытаюсь сделать программу, которая производит математике таблицы для любого числа так:Проблема с созданием Количество таблиц программы (как 12 х 1 = 12) в Javascript

3 х 1 = 3

3 х 2 = 6

3 х 3 = 9

3 х 4 = 12

мне нужно пользователю ввести:

(1) Любое число они нуждаются в таблицу (например - 3)

(2) указать начальную точку (например - 1)

(3) Указать конечную точку (например, - 4)

Мой испорчено код до сих пор выглядит следующим образом:

function isitanumber(numb){ 
 
     while (isNaN(numb) == true){ 
 
      \t \t numb = parseInt(prompt("Please add a valid number","5")); 
 
      \t } 
 
     } 
 
    
 
    
 
    function mytable (thenum, first, second){ 
 
     for (var i=first; i<=second; i++){ 
 
     \t var y = thenum*i; 
 
     \t document.write(thenum + " x " + i + " = " + y + "</br>"); 
 
     } 
 
     } 
 
    
 
    
 
    var mynum = parseInt(prompt("Enter the number you wish to have the table for", "40")); 
 
    mynum = isitanumber(mynum); 
 
    
 
    
 
    var startpoint = parseInt(prompt("Enter the startpoint of the table", "1")); 
 
    mynum = isitanumber(startpoint); 
 
    
 
    var endpoint = parseInt(prompt("Enter the endpoint of the table", "10")); 
 
    mynum = isitanumber(endpoint); 
 
    
 
    
 
    mytable(mynum,startpoint,endpoint);

+1

В чем проблема? – SLaks

+0

Всякий раз, когда я помещаю буквы в первом приглашении, а затем помещаю цифры во второе приглашение, он дает мне NaN. В частности, мне нужно выяснить, как получить доступ к последнему значению, которое вводит пользователь, в каких видах isNaN false. – nishkaush

+0

Используйте отладчик, чтобы узнать, что представляют собой ваши переменные. – SLaks

ответ

1

isitanumber возвращается undefined (значение по умолчанию, возвращаемое функциями без оператора return), которое вы назначаете mynum каждый раз (mynum = isitanumber(...)). Поэтому mynum содержит значение undefined.

Вы должны вернуть переменную, как вы закончите с петлей на NaN с (и присвоить его соответствующей переменной):

function isitanumber(numb) 
 
{ 
 
    while (isNaN(numb)) { 
 
      numb = parseInt(prompt("Please add a valid number","5")); 
 
    } 
 
    return numb; 
 
} 
 

 
function mytable (num, start, end) 
 
{ 
 
    for (var i = start; i <= end; i++) { 
 
     var y = num * i; 
 
     document.write(num + " x " + i + " = " + y + "</br>"); 
 
    } 
 
} 
 

 
var mynum = parseInt(prompt("Enter the number you wish to have the table for", "40")); 
 
mynum = isitanumber(mynum); 
 

 
var startpoint = parseInt(prompt("Enter the startpoint of the table", "1")); 
 
startpoint = isitanumber(startpoint); 
 

 
var endpoint = parseInt(prompt("Enter the endpoint of the table", "10")); 
 
endpoint = isitanumber(endpoint); 
 

 
mytable(mynum, startpoint, endpoint);

+0

Большое вам спасибо за подробный ответ! Застряли в этом коде за последние 8 часов, и я думаю, что теперь я мертв мозгом. Один быстрый вопрос - почему добавление «return» заставляет его работать? Что это изменило в процессе потока кода? Спасибо – nishkaush

+0

@nishkaush: Ну, без этого ваша функция не возвращает значение.Но вы пытаетесь использовать значение, возвращаемое функцией. Вы видите, как это не сработает? –

+0

жаль, что я новичок в JS и все еще выясняю, как все работает. Мне сказали не использовать возврат, потому что он заканчивает функции и циклы и должен быть последним выбором. но ясно, что он сохранил мой код здесь. – nishkaush

0

Вы сделали следующие ошибки:

Возвращаемое значение функции, Назначение переменной начальной точки, назначение переменной конечной точки

function isitanumber(numb){ 
 
    while (isNaN(numb) == true){ 
 
      numb = parseInt(prompt("Please add a valid number","5")); 
 
     } 
 
     return numb; 
 
    } 
 

 

 
function mytable (thenum, first, second){ 
 
    for (var i=first; i<=second; i++){ 
 
     var y = thenum*i; 
 
     document.write(thenum + " x " + i + " = " + y + "</br>"); 
 
    } 
 
    } 
 

 

 
var mynum = parseInt(prompt("Enter the number you wish to have the table for", "40")); 
 
mynum = isitanumber(mynum); 
 

 

 
var startpoint = parseInt(prompt("Enter the startpoint of the table", "1")); 
 
startpoint = isitanumber(startpoint); 
 

 
var endpoint = parseInt(prompt("Enter the endpoint of the table", "10")); 
 
endpoint = isitanumber(endpoint); 
 

 

 
mytable(mynum,startpoint,endpoint);