什么是条件语句?
条件语句可以说是一种结构,一种判断的结构,其实它就代表:如果…则…的逻辑。
什么时候使用条件语句?
条件语句的重要性
几乎所有的软件和程序,小到一个习题,大到一个操作系统,本质都是由" 变量、条件语句、循环语句"三大部分组成,所以条件语句非常的重要。
条件语句分类
作为Java重要的一个基础,条件语句分为几种,它们分别是:
①:if(单选择结构)
②:if-else(双选择结构)
③:if-else-else(多选择结构)
④:switch
条件语句,怎么学?
①:语法规则
②:怎么运行,如何影响程序的运行流程
③:在什么时候使用条件语句
(1)语法规则
1.语法
if(条件语句){
执行代码块;(可以有多条语句)
}
注意 :当条件语句为true时,就会执行 "{ }“之间的代码;如果为false,就不执行。
特别注意:如果 " { } " 中只有一条语句,则可以不用” { } “,建议写上” { } "
2.流程图
(2)如何运行
举一个例子:
编写一个程序。
输入人的年龄,如果该人的年龄大于18岁,则输出"你年龄大于18岁,要对自己的行为负责,送入监狱"。
思路分析:
1.接收输入的年龄,应该定义一个Scanner对象
2.把年龄保存到一个变量 int age
3.使用" if "判断,输出对应信息
实现代码
//定义一个Scanner对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入该人的年龄");
//把年龄存入到一个int age中
int age = sc.nextInt();
//使用if判断,输出对应信息
if(age>18){
System.out.println("你年龄大于18岁,要对自己的行为负责,送入监狱");
}
(1)语法规则
1.语法
if(条件语句){
执行代码块1;
}else{
执行代码块2;
}
注意 :当条件表达式成立时,即执行代码块1;否则执行代码块2
特别注意:如果执行代码块,只有一条语句,则可以省略" { } ",否则不能省略
//1、对下列代码,若有输出,则指出输出结果。
int x=7;
int y=4;
if(x>5){
if(y>5){
System.out.println(x+y);
}
System.out.println("2021.3.30");
}else
System.out.println("x is"+x);
//输出的内容是?
分析:
x—>7;
y—>4;
x=7;则外圈循环为真,else就不执行,只执行其中的代码if(y>5){
System.out.println(x+y);
}
为真,执行其中的语句;因为y=4;则y>5为假,则(x+y)不执行,则输出"2021.3.30";
,所以输出的内容为"2021.3.30"。
//2、编写程序,声明2个double类型变量并赋值,判断第一个数大于10.0,且第2个数小于20.0,打印两数之和。
//思路分析
double num1=11.0;
double num2=19.0;
if(num1>10.0 && num2<20){
System.out.println("两数之和为:"+(num1+num2));
}
//输出内容为30
//3、 定义两个变量int,判断二者的和,是否能被3又能被5整除,打印提示信息
//思路分析
//1、定义两个变量int num1,num2
//2、定义一个变量int sum3= num1+num2;
//3、sum%3,5后,等于0,说明可以整除
//4、使用if-else来提示对应信息
//走代码
int num1=7;
int num2=8;
int num3=num1+num2;
if(num3 % 3 == 0 && num 3 % 5 == 0){
System.out.println("能整除");
}else{
System.out.println("不能整除");
//4、判断一个年份是否是闰年,闰年的条件是符合下面二者之一:
//(1)年份能被4整除,但不能被100整除;
//(2)能被400整除
//思路分析
//1、 定义 int year 保存年
//2、 年份能被4整除,但不能被100整除 => year % 4 == 0 && year % 100 != 0
//3、能够被400整除 => year % 400 == 0
//4、上面的2 和 3 是 或的关系
//代码实现
int year=2021;
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
System.out.println(year+"是闰年");
}else{
System.out.println(year+"不是闰年");
}
(1)语法规则
1.语法
if(条件表达式1){
执行代码块1;
}
else if(条件表达式2){
执行代码块2;
}
......
else{
执行代码块n;
}
注意 :
(1)、当条件表达式1成立时,即执行代码块1,
(2)、如果表达式1不成立,才去判断表达式2是否成立,
(3)、如果表达式2成立,就执行代码块2,
(4)、以此类推,如果所有的表达式都不成立,则执行else的代码块,注意,只能有一个执行入口。
特别注意:
(1)多分支 可以没有 else,如果所有的条件表达式都不成立,则一个执行入口都没有
(2)如果有else,如果所有的条件表达式都不成立,则默认执行else代码块
(2)如何运行
举一个例子:
输入保国同志的芝麻信用分:
如果:
1、信用分为100分时,输出"信用极好";
2、信用分为(80,99]时,输出"信用优秀";
3、信用分为[60,80]时,输出"信用一般";
4、其他情况,输出"信用不及格";
5、请从键盘输入保国的芝麻信用分,并加以判断
代码实现:
Scanner sc = new Scanner(System.in);
//接收用户输入
System.out.println("请输入信用分(1-100):");
int grade=sc.nextInt();
if(grade >= 1 && grade <=100){
//因为有4种情况,所以使用多分支
if(grade==100){ //信用分为100分时,输出"信用极好"
System.out.println("信用极好");
}else if(grade>80 && grade<=99){ //信用分为(80,99]时,输出"信用优秀"
System.out.println("信用优秀");
}else if(grade>=60 && grade<=80){ //信用分为[60,80]时,输出"信用一般"
System.out.println("信用一般");
}else{ //其他情况,输出"信用不及格"
System.out.println("信用不及格");
}
}else{
System.out.println("信用分需要在1-100之间,请重新输入");
}
}
嵌套分支:
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。建议:不要超过3层(可读性不好)
基本语法:
if(){
if(){
//if-else....
}else{
//if-else....
}
}
应用案例:
参加歌手比赛,如果初赛成绩大于8.0进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。输入成绩和性别,进行判断和输出信息。
提示:double score; char gender;
接收字符串: char gender = scanner.next().charAt(0)
思路分析:
1、创建Scanner对象,接受用户输入
2、接收 成绩保存到 double score
3、使用 if-else 判断 如果初赛成绩大于8.0进入决赛,否则提示淘汰
4、如果进入到决赛,再接收 char gender,使用 if-else 输出信息
代码实现:
Scanner sc = new Scanner(System.in);
System.out.println("请输入该歌手的成绩");
double score = sc.nextDouble();
if(score > 8.0){
System.out.println("请输入性别:");
char gender =sc.next().charAt(0);
if( gender == '男'){
System.out.println("进入男子组");
}else if(gender == '女'){
System.out.println("进入女子组");
}else{
System.out.println("你输入的性别有误,不能cansa");
}
}else{
System.out.println("sorr,你被淘汰了");
}
}
}
应用案例2
出票系统:根据淡旺季的月份和年龄,打印票价
4-10月为旺季:
成人(19-60):60
儿童(<18):半价
老人(>60):1/3
淡季:
成人:40
其他:20
思路分析:
1、淡旺季 使用 if-else
2、在旺季中,可以使用多分支处理三种情况
3、在淡季情况,使用双分支处理即可
代码实现:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入买票的月份:");
int month = sc.nextInt();
if(month>=4 && month<=10){
System.out.println("请输入要购票人的年龄:");
int age =sc.nextInt();
if(age<18){
System.out.println("购买的旺季票价为:半价");
}else if(age>=18 && age<=60){
System.out.println("购买的旺季票价为:60元");
}else{
System.out.println("购买的旺季票价为:1/3");
}
}else{
System.out.println("请输入要购票人的年龄:");
int age2 = sc.nextInt();
if(age2>=18 && age2<=60){
System.out.println("购买的淡季票价为:40元");
}else{
System.out.println("购买的淡季票价为:40元");
}
}
}
}