JavaScript如何确保用户输入1到100之间的数字
您好,我希望用户输入一个介于1和100之间的数字,再高一点,我希望它显示数组超出边界,而不是将数字添加到数组中。这是我所拥有的,它可以工作,但当您输入另一个数字时,它会显示NANJavaScript如何确保用户输入1到100之间的数字,javascript,arrays,Javascript,Arrays,您好,我希望用户输入一个介于1和100之间的数字,再高一点,我希望它显示数组超出边界,而不是将数字添加到数组中。这是我所拥有的,它可以工作,但当您输入另一个数字时,它会显示NAN for(var i = 0; Repeat !== 'n'; i++){ Student.push(prompt("Enter Student Name: ")); Mark.push(parseInt (prompt("Enter Student mark: "))); //Check if
for(var i = 0; Repeat !== 'n'; i++){
Student.push(prompt("Enter Student Name: "));
Mark.push(parseInt (prompt("Enter Student mark: ")));
//Check if Mark entered is not out of bounds and gives a grade
if (Mark[i] <0 || Mark[i] >100){
alert("Grate out of bounds");
Mark.splice(i);//Removes array if out of bounds
}else if (Mark[i] >= 83){
getGrade.push("A");
A++;
}else if (Mark[i] >= 70){
getGrade.push ("B");
B++;
}else if (Mark[i] >= 50){
getGrade.push ("C");
C++;
}else if (Mark[i] >= 0){
getGrade.push ("F");
F++;
//If mark is not a number
}else if (isNaN(Mark)){
alert("Must input numbers");
}
Repeat = prompt ("Do you want to enter another student: y/n");
}
for(变量i=0;重复!='n';i++){
push(提示(“输入学生姓名”);
Mark.push(parseInt(提示(“输入学生标记”));
//检查输入的分数是否超出范围并给出分数
如果(标记[i]100){
警惕(“超出界限”);
Mark.splice(i);//如果超出范围,则删除数组
}否则如果(标记[i]>=83){
getGrade.push(“A”);
A++;
}否则如果(标记[i]>=70){
getGrade.push(“B”);
B++;
}否则,如果(标记[i]>=50){
getGrade.push(“C”);
C++;
}如果(标记[i]>=0),则为else{
getGrade.push(“F”);
F++;
//如果马克不是一个数字
}否则,如果(isNaN(标记)){
警报(“必须输入数字”);
}
Repeat=提示(“您想输入另一个学生:是/否”);
}
当您输入不正确的值时,阵列将不再与i
同步。例如,如果你输入(<代码>鲍伯< /代码>和<代码> 1000 /代码>)一年级,考虑在调用<代码>马克之后,将哪些变量存储在变量中。
现在,Mark
为空,i
已增加到1
。假设您现在输入值Johnny
和50
。您的变量如下所示:
Student = [Bob, Johnny]
Mark = [50]
var grade, name;
for (var i = 0; Repeat !== 'n'; i++) {
name = prompt("Enter Student Name: ");
grade = parseInt(prompt("Enter Student mark: "));
// check if grade entered is a number
if (isNaN(grade)) {
alert("Must input numbers");
continue;
}
// check if grade entered is not out of bounds
if (grade < 0 || grade > 100) {
alert("Grade out of bounds");
continue;
}
// store the data
Student.push(name);
Mark.push(grade);
if (grade >= 83) {
getGrade.push("A");
A++;
} else if (grade >= 70) {
getGrade.push("B");
B++;
} else if (grade >= 50) {
getGrade.push("C");
C++;
} else if (grade >= 0) {
getGrade.push("F");
F++;
}
Repeat = prompt("Do you want to enter another student: y/n");
}
请注意,当代码验证成绩时,没有标记[1]
,因为数组只包含一个值,i
正在查看第二个条目,因此NaN
。此外,Student
中的条目比Mark
中的条目多
作为一般原则,在完成所有验证逻辑之前,不应“提交”数据。因此,将输入的金额存储在临时变量中,检查它们,然后在获得良好的输入数据后,将它们添加到最后的数组中:
var entryStudent = prompt("Enter Student Name: ");
var entryMark = parseInt (prompt("Enter Student mark: "));
//Check if Mark entered is not out of bounds and gives a grade
...
//Once you have determined the values are valid, add them to the array
if (valid) {
Student.push(entryStudent);
Mark.push(entryMark);
} else {
// make sure i is moved back to previous entry so you don't skip one
i--;
}
此代码不完整(例如,您需要找出如何确定
有效
是否为真
或假
),但它应该给您一个大致的想法。我建议两件事-
Student = [Bob, Johnny]
Mark = [50]
var grade, name;
for (var i = 0; Repeat !== 'n'; i++) {
name = prompt("Enter Student Name: ");
grade = parseInt(prompt("Enter Student mark: "));
// check if grade entered is a number
if (isNaN(grade)) {
alert("Must input numbers");
continue;
}
// check if grade entered is not out of bounds
if (grade < 0 || grade > 100) {
alert("Grade out of bounds");
continue;
}
// store the data
Student.push(name);
Mark.push(grade);
if (grade >= 83) {
getGrade.push("A");
A++;
} else if (grade >= 70) {
getGrade.push("B");
B++;
} else if (grade >= 50) {
getGrade.push("C");
C++;
} else if (grade >= 0) {
getGrade.push("F");
F++;
}
Repeat = prompt("Do you want to enter another student: y/n");
}
var等级、名称;
对于(变量i=0;重复!='n';i++){
name=提示(“输入学生姓名:”);
成绩=parseInt(提示(“输入学生分数”);
//检查输入的等级是否为数字
if(伊斯南(等级)){
警报(“必须输入数字”);
持续
}
//检查输入的成绩是否超出范围
如果(等级<0 | |等级>100){
警戒(“等级越界”);
持续
}
//存储数据
学生推送(姓名);
标记。推(级);
如果(等级>=83){
getGrade.push(“A”);
A++;
}否则,如果(等级>=70){
getGrade.push(“B”);
B++;
}否则,如果(等级>=50){
getGrade.push(“C”);
C++;
}否则,如果(等级>=0){
getGrade.push(“F”);
F++;
}
Repeat=提示(“您想输入另一个学生:是/否”);
}
它在哪里显示“南”?NAN怎么说?我输入了一个超出范围的数字,它会将其删除,然后我会输入一个数字,显示“必须输入数字”,您当前正在对数组对象调用isNan(标记)
,而不是输入的特定标记。我想你的意思是isNan(Mark[I])。哇,谢谢你这么说,我真不敢相信我竟然不知道