3

我几乎不好意思问这个。

我是一个初学者程序员,Javascript 让我很困惑。在我的导师的帮助下,我设法完成了这么多,但有些简单的事情我做不到。

我尝试在 Stack Overflow 上搜索一个可以回答我的问题的线程,但我看到的所有这些都包含我尚未了解的代码,所以它们对我来说都是胡言乱语。

我要做的是添加一个数组的所有值,然后将总和除以数组的长度,ergo,找到平均值。作业的描述是求任意数量学生成绩的平均值。

我的两个问题是

  1. 我不知道如何获得数组中所有数值的总和,
  2. 出于某种原因,array.length 返回的比数组的实际长度多一,即使我添加了 -1。(例如,如果我输入 6 个值,array.length 将返回 7。)

我知道问题出在哪里,但我不知道我需要输入什么。这项任务明天到期,因此感谢任何人的时间和精力。

这是我的脚本:

<script type="text/javascript">
    var allGrades = new Array();
    var g = 0;
    var l = 0;
    var s = 0;
    var t = 0;
    do {
        allGrades[g] = window.prompt("Please enter one grade for each window. After you enter a grade, enter an 'x' to see the average of the grades you entered.", "")
        g++;
    }
     while (allGrades[g - 1] != "x")
     for (l = 0; l < allGrades.length - 1; l++) {
        s += allGrades[l] // Where I think the problem is
    }
    t == s / g - 1;
    g == allGrades.length - 1; //
    window.alert(g)
     switch (t) {
        case (t >= 90):
            window.alert("Your average grade is " + (t) + ". " + "This is an A.")
            break;
        case (t >= 80 && t < 90):
            window.alert("Your average grade is " + (t) + ". " + "This is a B.")
            break;
        case (t >= 70 && t < 80):
            window.alert("Your average grade is " + (t) + ". " + "This is a C.")
            break;
        case (t >= 60 && t < 70):
            window.alert("Your average grade is " + (t) + ". " + "This is a D.")
            break;
        case (t <= 60):
            window.alert("Your average grade is " + (t) + ". " + "This is a failing grade.")
            break;
    }
</script>

如果我问的问题看起来很愚蠢,我很抱歉。我只做了大约两个月的网络编程,所以我真的需要一些帮助!

凯尔

4

2 回答 2

1

==是比较运算符。您需要在=此处使用赋值运算符 ( ):

t==s/g-1; 

以及它附近的线路。

此外,为了您自己,请勿使用单字母变量名,除非您有充分的理由这样做。

这是编写脚本的一种更简洁的方法:

var grades = [];

do {
    var input = window.prompt("Please enter one grade for each window. After you enter a grade, enter an 'x' to see the average of the grades you entered.", "");

    grades.push(parseFloat(input));
} while (input != 'x');

var sum = 0;

for (int i = 0; i < grades.length; i++) {
    sum += grades[l];
}

var average = (sum / grades.length) * 100;
var grade;

if (average >= 90) {
    grade = 'A';
} else if (average >= 80) {
    grade = 'B';
} else if (average >= 70) {
    grade = 'C';
} else if (average >= 60) {
    grade = 'D';
} else {
    grade = 'failing grade';
}

alert('Your average grade is ' + average + '. ' + 'This is a ' + grade);
于 2013-04-05T04:41:56.740 回答
0
t==s/g-1; 
    g==allGrades.length-1; //

都是比较,对于分配,它们应该是

t=s/g-1; 
    g=allGrades.length-1; 
于 2013-04-05T04:42:22.617 回答