概述
在之前学习的程序,都是 顺序执行,根据编写的顺序,从上到下运行,如下:
public static void main(String[] args){
System.out.println(1);
System.out.println(2);
System.out.println(3);
}
提出问题:
输入分数,如果分数大于90,打印优;大于80,打印良;大于70,打印中;大于60,打印差,小于60,打印不及格
这种问题,上面的语句将无法实现
条件语句(判断语句、if语句)
格式
if(关系表达式){
语句体(块);
}
执行流程:
- 首先执行关系表达式,看其结果是
true还是false - 如果是
true就执行语句体 - 如果是
false就不执行语句体
例子:
System.out.println("开始");
// 定义两个变量
int a = 10;
int b = 20;
//变量使用if判断
if (a == b){
System.out.println("a等于b");
}
int c = 10;
if(a == c){
System.out.println("a等于c");
}
System.out.println("结束");
if…else 语句
格式
if(关系表达式) {
语句体1;
}else {
语句体2;
}
执行流程:
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就执行语句体2
例子:
public static void main(String[] args){
// 判断给定的数据是奇数还是偶数
// 定义变量
int a = 1;
if(a % 2 == 0) {
System.out.println("a是偶数");
} else{
System.out.println("a是奇数");
}
System.out.println("结束");
}
if…else语句 VS 三元运算符
if语句是可以和三元运算符互换使用的。
public static void main(String[] args) {
int a = 10;
int b = 20; //定义变量,保存a和b的较大值
int 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。
例子
int x = 30;
if( x == 10 ){
System.out.print("语句块1");
}else if( x == 20 ){
System.out.print("语句块2");
}else if( x == 30 ){
System.out.print("语句块3");
}else{
System.out.print("语句块4");
}
运算过程:
练习
输入成绩,判断成绩等级:
- 90-100 优秀
- 80-89 好
- 70-79 良
- 60-69 及格
- 60以下 不及格
System.out.println("请输入成绩:");
Scanner scanner=new Scanner(System.in);
int score=scanner.nextInt();
if(score<0 || score>100){
System.out.println("成绩错误,请输入0-100之间的数字");
}else if(score>=90){
System.out.println("优");
}else if(score>=80 ){
System.out.println("良");
}else if(score>=70){
System.out.println("中");
}else if(score>=60){
System.out.println("及格");
}else {
System.out.println("不及格");
}
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);





