Java基础11(if 条件语句)

条件语句

什么是条件语句?
条件语句可以说是一种结构,一种判断的结构,其实它就代表:如果…则…的逻辑。

什么时候使用条件语句?

  • 程序要运行,则需要执行各种语句,不同语句所表达的意思不同,而为了更好的分辨想要表达的意思,则会使用一些特殊的语句来解决问题,比如条件语句。
  • 与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流程,条件语句在Java中非常重要,进行各种判断,便于输出想要的结果,这章主要介绍条件语句,它的作用、它的用法。

条件语句的重要性
几乎所有的软件和程序,小到一个习题,大到一个操作系统,本质都是由" 变量、条件语句、循环语句"三大部分组成,所以条件语句非常的重要。

条件语句分类
作为Java重要的一个基础,条件语句分为几种,它们分别是:
①:if(单选择结构)
②:if-else(双选择结构)
③:if-else-else(多选择结构)
④:switch

条件语句,怎么学?
①:语法规则
②:怎么运行,如何影响程序的运行流程
③:在什么时候使用条件语句

1)单分支结构—if

(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岁,要对自己的行为负责,送入监狱");
    }
    

2)双分支结构—if else

(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+"不是闰年");  
  }

3)多分枝结构

(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.多分支流程图
Java基础11(if 条件语句)_第1张图片

(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之间,请重新输入");
     }
} 

4、嵌套分支

嵌套分支:
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。建议:不要超过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元");				
			}
			}
		}
	}

你可能感兴趣的:(Java基础,java)