我有一个程序可以计算学生在类(class)中的百分比,并且需要将最终输出全部放在一个框中。但是我的程序目前对每个学生都有警报框,我该如何解决这个问题?
这是代码
<script>
function studentName(x)
{
while(x == '' || x >= 0 || x < 0)
{
if(x == '')
{
x = prompt('Cannot leave field blank. Enter again');
}
else if (x >= 0)
{
x = prompt('Cannot Enter a number. Enter again')
}
else
{
x = prompt('Cannot Enter a number. Enter again')
}
}
return(x)
}
function studentScore(y)
{
while(y == '' || y > 100 || y < 0 || isNaN(y))
{
if (y == '')
{
y = parseFloat(prompt("Cannot leave field, blank please enter students score"));
}
else if (y > 100 || y < 0)
{
y = parseFloat(prompt("Invalid score, please enter a score 0-100"));
}
else
{
y = parseFloat(prompt("Invalid score, please enter a score 0-100"));
}
}
return(y)
}
function another(z)
{
while(z == '' && z != 'n' && z != 'N' && z != 'y' && z != 'Y')
{
while (z == '' && z != 'n' && z != 'N' && z != 'y' && z != 'Y' )
{
z = prompt('Invalid response, would you like to enter another score Y/N ')
}
while(z == 'n' || z == 'N')
{
Z = prompt('Would you like to enter another student')
}
while (z == 'y' || z == 'Y')
{
z = prompt("Enter another score")
}
}
return(z)
}
var names = []
var scores = []
var redo = true
var anotherName
var redo2
var retry = true
var anotherScore
var retry2
var i = 0
var a = 1
var score = 0
while(redo == true)
{
var studentNames = prompt('Enter student name');
var name = studentName(studentNames);
names.push(name)
while(retry == true)
{
var studentScores = parseFloat(prompt('Enter student score'));
score = score + studentScore(studentScores);
retry = prompt('Enter another score? Y/N');
retry = another(retry); /**/
if(retry == 'y' || retry == 'Y')
{
retry = true
a++
}
else if(retry == 'n' || retry == 'N')
{
retry = false
}
}
score = score / a
scores[i] = score
redo = prompt('Enter another student? Y/N');
redo = another(redo); /**/
if(redo == 'y' || redo == 'Y')
{
redo = true
retry = true
i++;
a = 1
score = 0
}
else if(redo == 'n' || redo == 'N')
{
redo = false
}
}
var message = ""
for(y=0; y < names.length; y++)
{
alert(names[y] + " - " + scores[y]);
}
我有一个程序可以计算学生在类(class)中的百分比,并且需要将最终输出全部放在一个框中。但是我的程序目前对每个学生都有警报框,我该如何解决这个问题并将所有学生的姓名放入一个最终警报框中?
最佳答案
您会收到单独的警报,因为您在每次迭代时都使用单独的值调用 alert
。一种解决方案是将名称和相应的分数合并到一个新数组中,并在此数组上调用一次alert
。在新数组上使用 join('\n')
会将数组元素转换为字符串,并用换行符分隔每个数组元素,以便格式化。只需更改最后一部分:
let roster = [];
for(let y=0; y < names.length; y++) {
roster.push(names[y] + " - " + scores[y]);
}
alert(roster.join('\n'))
如果您从一开始就将姓名和分数保存在一个数组中(例如花名册
),那就更好了。通过这种方式,您可以避免最后的额外迭代。
关于javascript - 如何将数组元素组合到最后的一个警报框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59757932/