多分支的if语句和跳楼现象
例1:用户输入成绩,如果成绩大于等于85,那么提示优秀;否则,如果成绩大于等于70,那么提示良好;否则,如果成绩介于60-69之间,那么提示及格;否则,不及格。
<script type="text/javascript">
var score=parseFloat(prompt("请输入成绩"));
if (score>=85){
alert("优秀");
}else if(score>=70){
alert("良好");
}else if(score>=60){
alert("及格");
}else{
alert("不及格");
}
</script>
语法:
if(条件表达式1){
条件1为真的时候做的事情
}else if(条件表达式2){
条件1不满足,条件2满足的时候做的事情
}else if(条件表达式3){
条件1、2不满足,条件3满足的时候做的事情
}else{
全都不满足的时候做的事情
}
跳楼现象揭示了多分支if语句的本质就是下一个楼层已经暗含以上楼层都不满足。
If语句的嵌套
例2:
一个加油站为了鼓励车主多加油,加的多有优惠。
92号汽油,每升6元;如果大于等于20升,那么每升5.9元;
97号汽油,每升7元;如果大于等于30升,那么每升6.95元;
编写JS程序,用户输入自己的汽油编号,再输入自己加多少升,弹出价格。
<script type="text/javascript">
//输入编号
var number=parseInt(prompt("请输入想加的汽油编号,92还是97?"));
var sheng=parseInt(prompt("请输入你想加多少升"));
//判断
if(number==92){
//编号是92时做的事情
if(sheng>=20){
var price=sheng*5.9;
}else{
var price=sheng*6;
}
}else if(number==97){
//编号是97时做的事情
if(sheng>=30){
var price=sheng*6.95;
}else{
var price=sheng*7;
}
}else{
alert("没有这种编号的汽油");
}
alert("价格是"+price);
</script>
例3:
某个公司要给员工发年终奖,工作时间越长,发的越多,规则如下:
工作满0年,发月薪的1倍年终奖,如果月薪大于8000则发1.2倍;
工作满1年,发月薪的1.5倍年终奖,如果月薪大于10000则发1.7倍;
工作满2年以上,发月薪的3倍年终奖,如果月薪大于12000则发3.2倍;
用JS编写程序,让用户输入工作几年,可以输入0,然后输入月薪,计算年终奖。
<script type="text/javascript">
//输入工作年限和月薪
var year=parseInt(prompt("请输入工作年限,可以输0"));
var salary=parseInt(prompt("请输入你的月薪"));
//判断
if(year>=2){
//工作满2年以上
if(salary>12000){
var bonus=salary*3.2;
}else{
var bonus=salary*3;
}
}else if(year>=1){
//工作满1年以上
if(salary>10000){
var bonus=salary*1.7;
}else{
var bonus=salary*1.5;
}
}else if(year>=0){
//工作满0年
if(salary>8000){
var bonus=salary*1.2;
}else{
var bonus=salary*1;
}
}
alert("你会有"+bonus+"元年终奖");
</script>
If语句小知识点:else部分可以省略。
<script type="text/javascript">
var a=10;
if(a>20){
alert("这个数字大于20");
}
</script>
没有else部分,也就是说没有“否则”,如果条件表达式不满足了,那么就什么都不做。
如果要做的事情只有一句话,那么可以省略大括号(不建议初学者使用):
<script type="text/javascript">
var a=2;
if(a>5)alert("这个数字大于5");
alert("哈哈");
</script>
这个程序不满足a>5,所以不能弹出"这个数字大于5",这是单行if语句,省略了大括号,等价于:
<script type="text/javascript">
var a=2;
if(a>5){
alert("这个数字大于5");
}
alert("哈哈");
</script>
练习:
用户输入一个数字,判断这个数字能否被5、6整除,根据情况弹出下面4种警告框:这个数字能同时被5和6整除;这个数字能被5整除,但不能被6整除;这个数字能被6整除,但是不能被5整除;这个数字既不能被5整除,也不能被6整除。
<script type="text/javascript">
var num=parseInt(prompt("请输入一个数字"));
//方法1:
if(num % 5==0){
if(num %6==0){
alert("能同时被5,6整除");
}else{
alert("能被5整除但不能被6整除");
}
}else{
if(num %6==0){
alert("能被6整除,但不能被5整除");
}else{
alert("既不能被5整除,也不能被6整除");
}
}
//方法2:
if(num % 5==0 && num %6==0){
alert("能被5、6同时整除");
}else if(num % 5==0){
alert("能被5整除,但不能被6整除");
}else if (num %6==0) {
alert("能被6整除,但不能被5整除");
}else{
alert("既不能被5整除也不能被6整除");
}
</script>
if-else语句:两个分支最终只执行一个分支
if-else if-else if…语句:多个分支,也是只会执行一个
switch-case语句:多分支语句,最终也执行一个(必须要有break)
三元表达式:和if-else语句一样
对范围的判断使用if-else if…
对具体的值的判断:使用switch-case
如果有多个分支,是针对范围的判断,一般选择if-else if语句
如果有多个分支,是针对具体值的判断,一般选择用switch-case语句