2016-04-01 2 views
0

Я пытаюсь сделать калькулятор факторов. Вы вводите число, и он обнаруживает факторы этого числа. Если вы разделите исходное число на коэффициент, вы получите нуль, и я пытаюсь реализовать это здесь, так что, когда он возвращается с «0», он попадает в массив и этот массив печатается.Новое программирование, не может понять, почему этот калькулятор не работает

var number = prompt("Number?") 
 
    
 
var array = [] 
 
    
 
function modulo(a, b) 
 
    { 
 
    return a % b; 
 
    } 
 
    
 
for (counter = 0; counter < number; counter++) 
 
    { 
 
     var result = modulo(number, counter) 
 
     if (result = 0) 
 
      { 
 
      array.push(counter) 
 
      } 
 
    } 
 
    
 
    for (counter = 0; counter < array.length; counter++) 
 
    { 
 
     alert(array[counter]) 
 
    }

Что происходит подсказка показывает, я ввести номер, и ничего не происходит. Может ли кто-нибудь помочь?

+0

Ваш код содержит много пробелов, которые на самом деле не помогут читаемости (а также отступов - вы должны отступу всей вложенным в '{}', поскольку они являются блоками, которые только исполняют внутри него). Эти вещи сделают ваш код более легким для отладки для себя. (В javascript скобка '{' обычно помещается непосредственно после объявления, поэтому 'function() {', просто потому, что она объединяет вещи более легко, но я думаю, что это предпочтение) – somethinghere

ответ

2

Вот проблема, вы использовали = (оператор присваивания) вместо оператора == сравнения

for (counter = 0; counter < number; counter++) 
{ 
    var result = modulo(number, counter) 
    if (result == 0) // in your code this is result = 0 
    { 
     array.push(counter) 
    } 
} 

Working demo


Полный код:

var number = prompt("Number?") 
var array = [] 
function modulo(a, b) 
{ 
    return a % b 
} 
for (counter = 0; counter < number; counter++) 
{ 
    var result = modulo(number, counter) 
    if (result == 0) 
    { 
     array.push(counter) 
    } 
} 

for (counter = 0; counter < array.length; counter++) 
{ 
    alert(array[counter]) 
} 
+0

Почему бы не сделать это фрагментом? В противном случае, да, это правильно. – somethinghere

2

Чтобы проверить, значения равны, используйте == и не =:

if (result == 0) 
+0

if (result === 0) – stepanian

+1

Проверка типа не требуется. modulo возвращает число. – Tschallacka

+0

@MichaelDibbets - вы должны прочитать JavaScript: Хорошие детали. Также см. Это: http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons – stepanian

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