Ввод диапазона значений массива с клавиатуры
Добрый день! Возникла проблема. При вводе диапазона значений массива с клавиатуры - значения умножаются на 10 сами по себе. Вывел в консоль некоторые промежуточные значения, увидел, что почему-то происходят ошибки. Но не знаю как их исправить. При вводе диапазона непосредственно в код - всё работает отлично! Вот код для ввода с клавиатуры!
window.onload = function() { var scores = []; scores.lenght = prompt("Введите колличество элементов массива", "10"); var min = prompt("Введите минимальное значение элемента массива", -10); var max = prompt("Введите максимальное значение элемента массива", 10); function randomInteger(min, max) { for(i=0; i<scores.lenght; i++) { scores[i] =Math.floor(min + Math.random() * (max + 1 - min)); } console.log("max+1 = " + max+1); console.log("1-min = " + (1-min)); console.log("max+1-min = " + (max + 1 - min)); console.log("min+Math.random() = " + min + Math.random()); console.log("max = " + max); console.log("min = " + min); console.log(scores); } randomInteger(min, max); } |
:-?
Цитата:
|
не понял. что вы имели ввиду?
|
Воскобоенко,
добавьте красное как в примере в строки 4, 6, 7 |
спасибо огромное! как называется этот процесс, что вы мне посоветовали? где про него можно почитать? что конкретно он делает? и чем отличается от того, что было у меня ранее?
|
|
|
спасибо! буду изучать
|
отлично! спасибо!
|
рони,
Но почему по прежнему в консоле выводятся неправильные промежуточные результаты? такие как max+1 = 101? Ведь там должно быть 11, потому что 10+1. max=10! Или просто игнорировать это? Объясните, пожалуйста:blink: |
Воскобоенко,
Потому что если приоритет операторов одинаков, то вычисление идет слева направо. Т.е вместо того что бы сложить значения,происходит склеивание со строкой.Вывод: сначала нужно вычислить,а затем склеивать со строкой! console.log("max+1 = " + (max + 1)); Еще примеры: alert([ 'str' + 7 + 7, 7 + 7 + 'str' ]) // 'str77','14str' |
Воскобоенко,
console.log("max+1 = ", max+1); console.log("1-min = " , (1-min)); console.log("max+1-min = " , (max + 1 - min)); console.log("min+Math.random() = " , min + Math.random()); console.log("max = " , max); console.log("min = " , min); console.log(scores); |
Часовой пояс GMT +3, время: 12:26. |