GPA计算器数学问题

时间:2015-02-27 00:23:59

标签: javascript

我的循环似乎工作正常,因为我可以根据用户的要求输入尽可能多的输入,但是当涉及到计算时,它会输出错误或打印出来"您的GPA是:NaN"

就我的数学而言,试图弄清楚我做错了什么。提前谢谢。

<script type ="text/javascript">
            <!--
            var grades = prompt("How many grades are you entering?");
            grades = Number(grades);
            var total;
            total = Number(total);
            var dec = Number(dec);
            for ( i = 0; i < grades; i++){
                prompt("Enter letter grade[A-E]: ");
            }
             if(i.equals("A")){
                 dec = 4;
                 total += dec;
             }
             else if (i.equals("B")){
                 dec = 3;
                 total += dec;
             }
             else if (i.equals("C")){
                 dec = 2;
                 total += dec;
             }
             else if (i.equals("D")){
                 dec = 1;
                 total += dec;
             }
             else if (i.equals("E")){
                 dec = 0;
                 total += dec;
             }

             var GPA;
             GPA = Number(GPA);
             GPA = total/grades;

             document.write("Your GPA is: "+ GPA);


            //-->
        </script>

1 个答案:

答案 0 :(得分:0)

您似乎相信需要使用类型

的语句来声明变量的类型
var dec = Number(dec);
不,你不是。在JavaScript中,变量没有类型,只有值。对于dec(以及totalGPA),它具有初始化值undefined并通过调用您刚刚投射的Number function会发生什么在将其重新分配给您的变量之前,它会NaN。别这么做!

  • 对于gradesNumber()强制转换是必要的,因为grades是从prompt()返回的字符串。您想将其解析为数字并将其重新分配给grades,这很好。
  • total只需使用数字文字0进行初始化。
  • dec甚至不需要。

顺便说一句,JavaScript中没有.equals方法,你似乎把语言与Java混淆了。只需使用==运算符即可。您还错过了var的{​​{1}}声明,对提示的成绩没有做任何处理,并且在您的循环之后放置了总和,而不是处理每个输入的成绩。

i