2015-07-17 4 views
0

Это моя программа подъема. Но Math random не работает.Почему Math.random не работает в моем коде?

var person = { 
    name: "Gorg", 
    position: 2, 
    goal: 9 
}; 
var lift = { 
    position: function() { 
     var x = Math.floor((Math.random() * 10) + 1); 
    } 
}; 
console.log("Ok, buddy! You are at " + person.position + " floor"); 
console.log("Lift is at " + lift.position + " floor"); 

if (lift.position != person.position) { 
    console.log("Please wait a minute, lift's coming"); 
} 
else { 
    console.log("Lift is here. Please enter!"); 
} 

if (lift.position > person.position) { 
    for (i = person.position; i <= lift.position; i++) { 
     console.log(i); 
    } 
} 
else if (lift.position < person.position) { 
    for (i = person.position; i >= lift.position; --i) { 
     console.log(i); 
    } 
} 
else { 
    console.log("You're already at this level"); 
} 

if (lift.position !== person.position) { 
    if (person.goal > person.position) { 
     for (i = person.position; i <= person.goal; i++) { 
      console.log(i); 
     } 
    } 
    else if (person.goal < person.position) { 
     for (i = person.position; i >= person.goal; --i) { 
      console.log(i); 
     } 
    } 
    else { 
     console.log("You're already at this level"); 
    } 
} 
console.log("Congratulation! You achieve your goal!"); 
+0

Что означает «не работает»? Просьба привести примеры того, что вы ожидаете и каков ваш результат. – bish

+0

Также это не работает. Все время пишите первое заявление if (lift.position()! = Person.position) { console.log («Подождите, подожди, прибудет лифт»); } else { console.log («Лифт здесь. Пожалуйста, введите!»); Что случилось? –

ответ

1

Две проблемы

Во-первых, изменить lift.position функцию так, чтобы она возвращает значение (а не назначать его в недоступное локальной переменной).

position: function() { 
    return Math.floor((Math.random() * 10) + 1); 
} 

Во-вторых, убедитесь, что вы вызовlift.position() функция (используйте скобки для вызова функции) ...

lift.position() 
+0

Спасибо! И ты поможешь мне еще раз? если (лифт.position()! = Person.position) { console.log («Подождите, подожди, прибудет лифт»); } else {console.log («Лифт здесь. Пожалуйста, введите!»); } Он всегда пишет первое сглаживание :( –

+0

Вы уверены, что ** всегда ** записывает первое заявление? Или он просто записывает первое заявление в среднем 9 из 10 раз? – sfletche

0

Вы назначили функцию в положение свойство объекта человека. Чтобы вызвать метод, вам нужно вызвать функцию, т. Е. Lift.position() not lift.position. Будет лучше, если вы измените имя свойства с «position» на «getPosition».

+0

Спасибо, а вы можете мне помочь еще ? время если (lift.position() = person.position!) { console.log ("Пожалуйста, подождите минуту, лифт пришествии");} еще { console.log ("Lift здесь пожалуйста. введите ");} Он всегда пишет первый sattement :( –

+0

Update уаг подъемных = { позиции: функция() { вара х = Math.floor ((Math.random() * 10) + 1); return x; до var lift = { позиция: функция() { var x = Math.floor ((Math.random() * 10) + 1); return x; }() } Это происходит потому, что каждый раз, когда вы проверяете состояние, он снова вызывает случайную функцию и обновляет позицию подъема. –

1

var person = { 
 
     name: "Gorg", 
 
     position: 2, 
 
     goal: 9 
 
    }; 
 
    var lift = { 
 
     position : function() { 
 
     var x = Math.floor((Math.random() * 10) + 1); 
 
    return x; 
 

 
     } 
 
    }; 
 
    console.log("Ok, buddy! You are at " + person.position + " floor"); 
 
    console.log("Lift is at " + lift.position() + " floor"); 
 

 
    if (lift.position != person.position) { 
 
    console.log("Please wait a minute, lift's coming"); 
 
    } 
 
    else { 
 
    console.log("Lift is here. Please enter!"); 
 
    } 
 

 
    if (lift.position > person.position) { 
 
    for (i = person.position; i <= lift.position; i++) { 
 
     console.log(i); 
 
    } 
 
    } else if (lift.position < person.position) { 
 
     for (i = person.position; i >= lift.position; --i) { 
 
     console.log(i); 
 
    } 
 
    } else { 
 
     console.log("You're already at this level"); 
 
    } 
 

 
    if (lift.position !== person.position) { 
 
     if (person.goal > person.position) { 
 
     for (i = person.position; i <= person.goal; i++) { 
 
     console.log(i); 
 
    } 
 
    } else if (person.goal < person.position) { 
 
     for (i = person.position; i >= person.goal; --i) { 
 
     console.log(i); 
 
    } 
 
    } else { 
 
     console.log("You're already at this level"); 
 
    } 
 
    } 
 
    console.log("Congratulation! You achieve your goal!");

Из того, что я мог понять, это решение

//returned x here; 
var lift = { 
     position : function() { 
     var x = Math.floor((Math.random() * 10) + 1); 
    return x; 

     } 

// скорректирован вызов lift.position в lift.position()

console.log("Lift is at " + lift.position() + " floor");