2014-03-31 77 views
1

你好我想让用户输入几个标记,并在最后给出最高分和最低分,但由于某种原因它打印两次,并在第二次打印无限和想法?JavaScript打印多次

var gradeAwarded; 
var gradeAwarded; 
var repeate = true; 
var max; 
var A; 
var B; 
var C; 
var F; 

var repeat, studentArr = [], markArr = []; 
while (repeat !== 'n' && repeat !== 'N'){ 
    studentArr.push(prompt("Enter Student Name: ")); 
    markArr.push(parseInt (prompt("Enter Student mark: "))); 
    repeat = prompt ("Do you want to enter another student: y/n"); 
} 

Array.prototype.max = function() { 
    return Math.max.apply(Math, markArr); 
}; 

Array.prototype.min = function() { 
    return Math.min.apply(Math, markArr); 
}; 
var min = markArr.min(); 
var max = markArr.max(); 


if (markArr <0 || markArr >100){ 
    alert("Grate out of bounds"); 
}else if (markArr >= 83){ 
    gradeAwarded = "A"; 
    A = +1; 
}else if (markArr >= 70){ 
    gradeAwarded = "B"; 
    B = +1; 
}else if (markArr >= 50){ 
    gradeAwarded = "C"; 
    C = +1; 
}else if (markArr >= 0){ 
    gradeAwarded = "F"; 
    F = +1;              
} 

    document.write("The Highest mark was : "+max); 
    document.write("The Lowest mark was : "+min); 

回答

1

必须||的& &

while (repeat !== 'n' || repeat !== 'N'){ 
    studentArr.push(prompt("Enter Student Name: ")); 
    markArr.push(parseInt (prompt("Enter Student mark: "))); 
    repeat = prompt ("Do you want to enter another student: y/n"); 
} 

代替,你也应该清楚设定在和流程重复变量

+0

你是对的它应该是||但对于一些振振有辞它使一个infenite循环 – HelloWorld

+0

你好,我想显示像我的数据,以便 学生马克级 学生马克级 学生马克级 学生马克级 学生马克 级 如何将我去这这是我的代码不必介意底部的document.write作为我作业的另一部分。 – HelloWorld

+0

你问题不清楚。请打开一个网络问题并进行解释 –

1

你用这样的第二次运行它永远不会运行,因为重复==“N”脚本while循环。 markArry被重置,这就是为什么你第二次运行脚本时无限。

您应该使用do while循环代替。事情是这样的:

do { 
    studentArr.push(prompt("Enter Student Name: ")); 
    markArr.push(parseInt (prompt("Enter Student mark: "))); 
    repeat = prompt ("Do you want to enter another student: y/n"); 
}while(repeat !=='n' || repeat !=='N'); 

应该工作

+0

罗没有工作做一个无限循环 – HelloWorld

+0

它为我工作。尝试刷新您的浏览器 – kyros

+0

我不认为你发布了你的整个脚本 – kyros