Я пытаюсь понять, почему мой вклад в очки 1, 2 и 3
принимаются в виде строки. Пример: оценка1 = 1, оценка2 = 1, оценка3 = 1. Средняя оценка рассчитывается как 111/3, а не как 3/3.
player1 = prompt(" Welcome Player 1! Please Enter your name ");
alert(" Hello, " + player1+".");
p1score1 = prompt(' Enter first score. ');
p1score2 = prompt(' Enter second score. ');
p1score3 = prompt(' Enter third score. ');
/*p1score1 = 89;
p1score2 = 120;
p1score3 = 103;
*/
p1avgScore = (p1score1 + p1score2 + p1score3)/3;
console.log(" Congratulations " + player1 + ". Your scores are: " +
p1score1 + ", " + p1score2 + ", " + p1score3 + ".");
console.log(" Your average score of all three games are: " +
p1avgScore);
Это связано с тем, что функция prompt()
возвращает строку, а не число, из-за которого (p1score1 + p1score2 + p1score3)
производит конкатенацию строк p1score1
, p1score2
и p1score3
, а не выполняет искусственную (т.е. сложение) всех в Итого.
Рассмотрим следующую корректировку с parseFloat()
для решения этой проблемы:
p1score1 = parseFloat( prompt(' Enter first score. ') );
p1score2 = parseFloat( prompt(' Enter second score. ') );
p1score3 = parseFloat( prompt(' Enter third score. ') );
Таким образом, результат каждой prompt()
анализируется на число, что означает, что значениями типов для p1score1
и т.д. Являются number
. Теперь это означает, что в этой строке будет выполняться сложение, а не конкатенация строк:
(p1score1 + p1score2 + p1score3)/3
Надеюсь, это поможет!
var player1 = prompt(" Welcome Player 1! Please Enter your name ");
alert(" Hello, " + player1 + ".");
var p1score1 = parseFloat(prompt(' Enter first score. '));
var p1score2 = parseFloat(prompt(' Enter second score. '));
var p1score3 = parseFloat(prompt(' Enter third score. '));
var p1avgScore = (p1score1 + p1score2 + p1score3) / 3;
console.log(" Congratulations " + player1 + ". Your scores are: " +
p1score1 + ", " + p1score2 + ", " + p1score3 + ".");
console.log(" Your average score of all three games are: " +
p1avgScore);