Вот код:
function studentName(x)
{
while(x == '')
{
x = prompt('Cannot leave field blank. Enter again');
}
return(x)
}
function studentScore(y)
{
while(y == '' || y > 100 || y < 0 || isNaN(y))
{
y = parseFloat(prompt('Invalid score. Enter score again'));
}
return(y)
}
function another(z,t)
{
while(z == '' && z != 'n' && z != 'N' && z != 'y' && z != 'Y')
{
if(z == 'y' || z == 'Y')
{
z = prompt('Invalid Option. Enter another score? Y or N')
}
else
{
t = prompt('Invalid Option. Enter another student? Y or N')
}
}
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
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'));
var score = score + studentScore(studentScores);
retry = prompt('Enter another score? Y/N');
retry2 = 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');
redo2 = another(redo);
if(redo == 'y' || redo == 'Y')
{
redo = true
retry = true
i++;
a = 1
score = 0
}
else if(redo == 'n' || redo == 'N')
{
redo = false
}
}
for(y=0; y < names.length; y++)
{
alert(names[y] + " - " + scores[y]);
}
Попробуйте запустить код, чтобы понять, что это проблема, которую трудно описать, но в основном, я думаю, что массив не правильно хранит первый результат, потому что он продолжает произносить имя ученика в качестве имени, а оценка либо NaN, либо undefined