需求分析:
1.用户输入的年龄为多个,所以需要用到数组来保存数据,
新建一个空数组
当用户输入值满足条件时,push导入到空数组中
当不满足条件时让用户重新输入,一共需要5个有效值
let all = [] //定义空数组存放用户输入数据
for(let i= 1;i<=5;){ //已知需要收集5次数据,循环条件为5,定义一个自增量为i
//i这里先不自加,当用户输入的数据满足条件后才能执行第二次用户输入操作,所 以i需要放在if判断里面
let nub = +prompt(`请输入第${i}个年龄`) //将用户输入的数据存储到一个变量中
if(nub<100 && nub>0){ //条件- 100>用户输入值>0
all.push(nub) // 当满足条件时把用户输入的值添加到all数组中
i++ // 当条件满足时i自加1,则会进入第二次循环,一直到第5次停止循环
}else{
alert('请重新输入') //当不满足条件时提示用户重新输入,此时因为i没有自加,所以还是执行第一次输入操作,进入死循环,只有条件满足才会进入下次循环
}
2.筛选出all数组里面大于18岁的人
新建一个空数组
遍历all数组,找出大于18的数
导入到新数组中
let arr = [] //空数组
for(let q =0; q<all.length;q++){ //遍历数组
if(all[q]>18){ //数组里面的第[q]个大于18的时候
arr.push(all[q]) //打印到新数组arr中
}
}
console.log(`成年人的年龄${arr}`)
3.筛选出所有人的总年龄
创建一个空变量,用于存储数组自加的和
遍历数组挨个加一遍
let nub1=0 //用于存储年龄总和
for(let q =0; q<all.length;q++){ //遍历数组
nub1=nub1+all[q]
//nub1+all[q]在不断的重新给nub1赋值,即nub1第二次循环的时候,nub1的值为 第一次循环时nub1+all[q]的值,依次类推进行叠加即可求出总和
}
4.求所有人的平均年龄
年龄总和/人数
console.log(`平均年龄是${nub1/all.length}`);
5.打印最大年龄和最小年龄
假设数组中第一个年龄是最大的
和数组中每一个年龄进行对比
let max=all[0] //假设最大年龄是数组的第一个
for(let q =0; q<all.length;q++){ //遍历数组
if(all[q]>max){ //当数组中第q个数大于第一个数的时候(max=all[0])
max=all[q] //max=第q个数,此时max被重新赋值,继续进行比较,直到找出最大值
//如为满足此条件则不会进入到if里面,max也不会被更小的值赋值
}
if(all[q]<min){ //原理同上
min=all[q]
}
完整代码
let all = []
for(let i= 1;i<=5;){
let nub = +prompt(`请输入第${i}个年龄`)
if(nub<100 && nub>0){
all.push(nub)
i++
}else{
alert('请重新输入')
}
}
let nub1 = 0
let arr = []
let max=all[0]
let min=all[0]
for(let q =0; q<all.length;q++){
nub1+=all[q]
if(all[q]>18){
arr.push(all[q])
}
if(all[q]>max){
max=all[q]
}
if(all[q]<min){
min=all[q]
}
}
console.log(all)
console.log(`所有人的年龄总和是${nub1}`)
console.log(`成年人的年龄${arr}`)
console.log(`平均年龄是${nub1/all.length}`);
console.log(`年龄最大的是${max}`);
console.log(`年龄最小的是${min}`);