【问题标题】:I'm trying to find the average of 3 scores which I ask the user to input我试图找到我要求用户输入的 3 个分数的平均值
【发布时间】:2019-06-04 19:34:12
【问题描述】:

我试图理解为什么我输入了 scores1、scores2 和 scores3
被当作​​一个字符串。例如:score1 = 1,score2 = 1,score3= 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);

【问题讨论】:

    标签: javascript mean


    【解决方案1】:

    这是因为prompt() 函数returns a string,而不是导致(p1score1 + p1score2 + p1score3) 产生字符串p1score1p1score2p1score3 的串联的数字,而不是执行算术运算(即加法) 的总和。

    考虑通过添加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);

    【讨论】:

      【解决方案2】:

      您只需要以整数/浮点数解析您的输入。

      player1 = prompt(" Welcome Player 1! Please Enter your name ");
        alert(" Hello, " + player1+".");
      
      
        p1score1 = parseInt(prompt(' Enter first score. '));
        p1score2 = parseInt(prompt(' Enter second score. '));
        p1score3 = parseInt(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);

      【讨论】:

      • 嗨@Hamza Abbasi,你的答案是完美的,但你可以使用 Number 函数,它也可以用作 parseInt。例如。 parseInt(2) = Number(2)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多