Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript提示和警告输入一个数字,它将循环,您将输入数字以获得其平均值_Javascript_Html_Loops - Fatal编程技术网

Javascript提示和警告输入一个数字,它将循环,您将输入数字以获得其平均值

Javascript提示和警告输入一个数字,它将循环,您将输入数字以获得其平均值,javascript,html,loops,Javascript,Html,Loops,我有下面带有循环的javascript代码,但我不能得到它的平均值。我不确定我的代码出了什么问题。就像第一个提示,你输入一个数字,它会循环,你输入数字,比如你输入了多少,你会得到所有数字的总和,然后在完成后得到平均值。这是我的密码 函数show_prompt() { var n=prompt(“输入一个数字:”,“此处为数字”); 如果(n==n) { var i=1; 做 { var g=提示(“输入等级:”); var等级=parseInt(g); var合计=等级+等级; i++; } 而

我有下面带有循环的javascript代码,但我不能得到它的平均值。我不确定我的代码出了什么问题。就像第一个提示,你输入一个数字,它会循环,你输入数字,比如你输入了多少,你会得到所有数字的总和,然后在完成后得到平均值。这是我的密码

函数show_prompt() {

var n=prompt(“输入一个数字:”,“此处为数字”);
如果(n==n)
{
var i=1;
做
{
var g=提示(“输入等级:”);
var等级=parseInt(g);
var合计=等级+等级;
i++;
}
而(i你在每个区间用两倍的等级值覆盖你的“总”变量

var grade=parseInt(g);
 var total=grade+grade;
应改为

var grade=parseInt(g);
 total=total+grade;
此外,您需要在代码开头初始化“total”变量。 请参阅演示代码:


我还建议进行一些输入验证(例如检查要求平均的分数是否大于0,所有分数是否为正等)。

我认为您希望实现以下目标:

只需将console.log替换为您自己的document.write

现在,尽管我非常讨厌使用提示,而且我也不太习惯它们,但以下是我认为您在脚本中缺少的内容:

  • 控件:“n”和“g”变量必须是整数,因此强制用户插入整数
  • 变量声明:每次循环时都声明
    total
    ,因此根本不存储任何内容
  • 要解决这些问题,代码的第一部分是:

    var n = prompt("Input a number: ", "Number here");
    while (!parseInt(n) )
    {
     n=prompt("Input a number: ", "Number here");   
    }
    
    通过这种方式,您要求用户给您一个数字,但是脚本在能够有效地解析整数值之前不会进行处理

    因此,诸如“hey”、“hello”、“foo”、“bar”、“baz”之类的输入将不被接受

    然后,代码的第二部分变为:

    var i=1;
        var total = 0;
        do
        {
            var g = prompt("Input grade: " );
            while (!parseInt(g)) {
                g = prompt("Input grade: " );
            }
            var grade = parseInt(g);
            total += grade;
            i++;
    
        }
        while(i<=n);
        var average=(total)/n;
        console.log("Average is: " +average);
    
    var i=1;
    var合计=0;
    做
    {
    var g=提示(“输入等级:”);
    而(!parseInt(g)){
    g=提示(“输入等级:”);
    }
    var等级=parseInt(g);
    总数+=年级;
    i++;
    }
    
    而(i请尝试下面的代码以获得输入数字的平均值

    numGrades = prompt("Enter number of grades to be entered: ");
    
    //number of grades to be entered LOOP 
    for (index = 1; index <= numGrades; index++) {
      numberGrades = prompt("Enter Grade " + index);
    }
    
    //Calculation
    gradePointAverage = numberGrades / numGrades;
    document.write("Your GPA is " + gradePointAverage );
    
    numGrades=prompt(“输入要输入的分数:”);
    //要在循环中输入的等级数
    
    对于(index=1;index我不知道你想做什么,但有一件事我可以告诉你,你的第一个if语句是毫无意义的。你问变量
    n
    is==to variable
    n
    …显然
    n
    将与
    n
    相同,因为
    n
    n
    …n==n将始终为真,而w为什么要添加grade+grade?每次在循环中都要声明total。另外,什么样的控件是n==n?n将始终被定义,因为它是一个输入。您应该检查它是否是一个数字,而不是它本身。
    numGrades = prompt("Enter number of grades to be entered: ");
    
    //number of grades to be entered LOOP 
    for (index = 1; index <= numGrades; index++) {
      numberGrades = prompt("Enter Grade " + index);
    }
    
    //Calculation
    gradePointAverage = numberGrades / numGrades;
    document.write("Your GPA is " + gradePointAverage );