概述
在之前学习的程序,都是 顺序执行,根据编写的顺序,从上到下运行
提出问题:
输入分数,如果分数大于90,打印优;大于80,打印良;大于70,打印中;大于60,打印差,小于60,打印不及格
这种问题,上面的语句将无法实现
条件语句(判断语句、if语句)
格式
if(关系表达式){
语句体(块);
}
执行流程:
- 首先执行关系表达式,看其结果是
true还是false - 如果是
true就执行语句体 - 如果是
false就不执行语句体
例子:
console.log("开始");
// 定义两个变量
var a = 10;
var b = 20;
//变量使用if判断
if (a == b){
console.log("a等于b");
}
int c = 10;
if(a == c){
console.log("a等于c");
}
console.log("结束");
if…else 语句
格式
if(关系表达式) {
语句体1;
}else {
语句体2;
}
执行流程:
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就执行语句体2
例子:
// 判断给定的数据是奇数还是偶数
// 定义变量
var a = 1;
if(a % 2 == 0) {
console.log("a是偶数");
} else{
console.log("a是奇数");
}
console.log("结束");
if…else语句 VS 三元运算符
if语句是可以和三元运算符互换使用的。
var a = 10;
var b = 20; //定义变量,保存a和b的较大值
var c;
if(a > b) {
c = a;
} else {
c = b;
}
//可以上述功能改写为三元运算符形式
c = a > b ? a:b;
if..else if…else 语句
格式
if (判断条件1) {
执行语句1;
} else if (判断条件2) {
执行语句2;
}
...
} else if (判断条件n) {
执行语句n;
} else {
执行语句n+1;
}
执行流程:
- 首先判断关系表达式1看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就继续判断关系表达式2看其结果是true还是false
- 如果是true就执行语句体2
- 如果是false就继续判断关系表达式…看其结果是true还是false
- …
- 如果没有任何关系表达式为true,就执行语句体n+1。
例子
var x = 30;
if( x == 10 ){
console.log("语句块1");
}else if( x == 20 ){
console.log("语句块2");
}else if( x == 30 ){
console.log("语句块3");
}else{
console.log("语句块4");
}
运算过程:
练习
输入成绩,判断成绩等级:
- 90-100 优秀
- 80-89 好
- 70-79 良
- 60-69 及格
- 60以下 不及格
<script>
// 根据分数显示出优良中差
// 大于90,显示优;大于80显示良,大于70显示中,大于60显示及格,否则不及格
var score = 55;
if(score>=90){
console.log("优")
}else if(score>=80){
console.log("良")
}else if(score>=70){
console.log("中")
}else if(score>=60){
console.log("及格")
}else{ // 没有必要再做判断
console.log("不及格")
}
console.log("程序执行结束")
</script>
if语句嵌套
练习
假设某航空公司为吸引更多的顾客推出了优惠活动。原来的飞机票价为 3000 元,活动时,4~11 月旺季,头等舱 9 折,经济舱 8 折;1~3 月、12 月淡季,头等舱 5 折,经济舱 4 折,求机票的价格。
Scanner sc = new Scanner(System.in);
System.out.println("请输入出行的月份:");
int month = sc.nextInt();
System.out.println("选择头等舱还是经济舱?数字1为头等舱,数字2为经济舱");
int kind = sc.nextInt();
// 原始价格
double price = 3000;
double result=0;
// 旺季的票价计算
if (4 <= month && month <= 11 ) {
if (kind == 1) { // 旺季头等舱
result = price * 0.9;
} else if (kind == 2) { // 旺季经济舱
result = price * 0.8;
} else {
System.out.println("选择种类有误,请重新输入!");
}
}
// 淡季的票价计算
else if ((1 <= month && month <= 3) || month == 12) {
if (kind == 1) { // 淡季头等舱
result = price * 0.5;
} else if (kind == 2) { // 淡季经济舱
result = price * 0.4;
} else {
System.out.println("选择种类有误,请重新输入!");
}
} else {
System.out.println("日期选择有误,请重新输入!");
}
System.out.println("您选择的机票价格为:" + result);





