【java基础08 控制语句:IF】

本文详细介绍了Java中的if语句,包括四种基本结构,实战演示了天气判断、成绩评级、年龄阶段划分等场景,并探讨了equals与==的区别。通过实例展示如何运用条件控制实现逻辑分支和嵌套。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

java中的if语句,属于选择结构。if语句又被称为分支语句/条件控制语句

练习


java中的if语句,属于选择结构。if语句又被称为分支语句/条件控制语句

  1. if语句的语法结构:四种编写方式

    public class IfText01 {
        public static void main(String[] args){
    
    //第一种:条件为真,执行java语句,如果条件为假,不执行并结束
            if (true){
                java语句
                java语句
                java语句
            }
    //---------------------------------------------------------
            //第二种:条件为真,执行第一个分支,反之,执行第二个分支
           if (false){
                java语句
                java语句
                java语句
            }else{
                java语句
                java语句
                java语句
            }
    //-----------------------------------------------------------------
            //第三种:一直判断,直到出现为真,执行分支,执行之后,整个语句全部结束;
            // 或全部为假,分支不执行,整个if语句结束
            if (false){
                java语句
                java语句
                java语句
            }else if(true){
                java语句
                java语句
            }else if(true){
                java语句
                java语句
            }else if(true){
                java语句
                java语句
            }else if(true){
                java语句
                java语句
            }else if(true){
                java语句
                java语句
            }
    //--------------------------------------------------
            //第四种:如果全部不成立,则执行最后的else分支。
             if (false){
                java语句
                java语句
                java语句
            }else if(true){
                java语句
                java语句
            }else if(true){
                java语句
                java语句
            }else if(true){
                java语句
                java语句
            }else if(true){
                java语句
                java语句
            }else if(true){
                java语句
                java语句
            }else{
                java语句
                java语句
            }
            
        }
    }
    
  2. 重点:对于java中的if语句来说,只要有一个分支执行,整个if语句全部结束。

  3. 注意:第二种和第四种编写方式都带有else分支,这两种方式肯定会有分支执行。

    ​ 第一种和第三种方式,可能全部不会执行

  4. “所有的控制语句”都是可以嵌套使用的。只要合理嵌套就行。

    注意:嵌套使用时,该缩进就要缩进,大部分情况下,使用大括号包围的需要缩进

    public class IfText01 {
        public static void main(String[] args){
            if(false){
                if(false){
                    if(true){
    
                    }
                }else if(false){
    
                }
            }else{
                if(false){
    
                }
            }
        }
    }
    
  5. IF语句的分支只有一条java语句时,大括号可以省略不写。(不推荐省略,别人这样写能看懂就行)

    public class IfText01{
        public static void main(String[] args){
        
         if(true/false){
                一条java语句
            }
    
            if(true/false) 一条java语句
        } 
    }
    

练习

  1. 所在位置的五公里范围之内有肯德基的话,去KFC吃午饭

    public class IfText01 {
        public static void main(String[] args){
            //需求:所在位置的五公里范围之内有肯德基的话,去KFC吃午饭
            //公里数
            //double distance=5.1;//单位:KM    为假不执行
            double distance=4.1;//为真,执行分支
    
            //判断语句
            if(distance<5){
                System.out.println("去KFC吃饭");
            }
        }
    }
    
  2. 假设系统给定;一个考生的成绩,成绩可能带有小数点,学生成绩范围在[0-100]
    根据学生的成绩判断该学生的成绩等级
    [90-100]A
    [80-90) B
    [70-80) C
    [60-70) D
    [0-60) E

    以上的逻辑判断采用if语句完成,应该怎么写

    public class IfText01 {
        public static void main(String[] args){
    //根据需求采用第三种结构
    //        double grade=90.0;
    //        if(grade >= 90 && grade <= 100){
    //            System.out.println("该考生的考试成绩等级为:A");
    //        }else if(grade >= 80 && grade < 90){
    //            System.out.println("该考生的考试成绩等级为:B");
    //        }else if(grade >= 70 && grade < 80){
    //            System.out.println("该考生的考试成绩等级为:C");
    //        }else if(grade >= 60 && grade < 70){
    //            System.out.println("该考生的考试成绩等级为:D");
    //        }else if(grade >= 0 && grade < 60){
    //            System.out.println("该考生的考试成绩等级为:E");
    //        }//使用短路与,即左边的表达式为flase则右边的表达式不会再执行,效率更高
    
    //==================================================================================
    
            //根据需求采用第四种结构
    //        double score=62.2;
    //        if(score < 0 || score > 100){//使用短路或,左边的表达式为true则右边的不执行,效率更高
    //            System.out.println("对不起,您输入的考生成绩有误,请确认后重新输入");
    //            //保证学生成绩范围在[0-100]
    //        }else if(score >= 90){
    //            System.out.println("该考生的考试成绩等级为:A");
    //        }else if(score >= 80){
    //            System.out.println("该考生的考试成绩等级为:B");
    //        }else if(score >= 70){
    //            System.out.println("该考生的考试成绩等级为:C");
    //        }else if(score >= 60){
    //            System.out.println("该考生的考试成绩等级为:D");
    //        }else{
    //            System.out.println("该考生的考试成绩等级为:E");
    //        }
            //可以使用第一种方式以完成需求,但是这种方式效率低。每一个都是不相关的,都是独立的
            //每一个if语句都要判断一次
    
    //=================================================================================
            double score=61;
            String grade="该考生的考试成绩等级为:E";
            if(score>100 || score<0){
                grade="该考生的考试成绩不合法,请确认后重新输入";
            }else if(score >= 90){
                grade="该考生的考试成绩等级为:A";
            }else if(score >= 80){
                grade="该考生的考试成绩等级为:B";
            }else if(score >= 70){
                grade="该考生的考试成绩等级为:C";
            }else if(score >= 60){
                grade="该考生的考试成绩等级为:D";
            }
            System.out.println(grade);
            
        }
    }
    
  3. 需求:
    假设系统给定一个人的年龄(这个年龄需要从键盘输入),
    根据年龄判断这个人处于生命的哪个阶段,年龄范围必须在【0-150】
    [0-5] 幼儿
    [6-10] 少儿
    [11-18] 青少年
    [19-35] 青年
    [36-55] 中年
    [56-150] 老年

    public class IfText02 {
        public static void main(String[] args){
            //1.接受用户键盘输入:年龄【输入时必须输入数字】
            java.util.Scanner s = new java.util.Scanner(System.in);
    
            System.out.print("请输入您的年龄:");//输出提示信息,要不然用户根本不知道这里要干嘛
    
            int age = s.nextInt();//停下来等待用户的输入,输入之后自动接收,赋值给age变量。
    
                // System.out.println("age="+age);
    
            //2、根据需求进行业务逻辑判断
            String year="老年";
            if(age < 0 || age > 150){
                year="您输入的年龄有误,请确认后重新输入";
            }else if(age<=5){
                year="幼儿";
            }else if(age<=10){
                year="少儿";
            }else if(age<=18){
                year="青少年";
            }else if(age<=35){
                year="青年";
            }else if(age<=55){
                year="中年";
            }
            if(age < 0 || age>150){
                System.out.println(year);
            }else{
                System.out.println("您正处于生命的"+year+"阶段");
            }
    
            //System.out.println("您正处于生命的"+year+"阶段");
            //当age超范围时,输出:您输入的年龄有误,请确认后重新输入阶段
    //============================================================================
            
    //        if(age < 0 || age > 150){
    //            System.out.println("您输入的年龄有误,请确认后重新输入");
    //        }else if(age>=56){
    //            System.out.println("您正处于生命的老年阶段");
    //        }else if(age>=36){
    //            System.out.println("您正处于生命的中年阶段");
    //        }else if(age>=19){
    //            System.out.println("您正处于生命的青年阶段");
    //        }else if(age>=11){
    //            System.out.println("您正处于生命的少年阶段");
    //        }else if(age>=6){
    //            System.out.println("您正处于生命的少儿阶段");
    //        }else if(age>=0){
    //            System.out.println("您正处于生命的幼儿阶段");
    //        }
            
        }
    }
    
    
  4. equals方法是java.lang.Object类的方法

    对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。有两种用法说明:

    • “==”比较两个变量本身的值,即两个对象在内存中的首地址。

      (java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属性)

    • “equals()”比较字符串中所包含的内容是否相同。

  5. 判断当前的天气

    /*
        需求:
        判断当前的天气:
            当外面下雨的时候:
                带雨伞:
                    判断性别:
                     当性别为男:大黑伞
                        当性别为女:小花伞
            当外面是晴天的时候:
             判断天气温度:
                    天气温度再30°以上:
                        性别为男:带墨镜
                        性别为女:擦防晒霜
    
        提示: 1.一定会用到嵌套
              2.天气状况、温度、性别都需要从键盘键入
     */
    public class IfText03 {
        public static void main(String[] args){
    
            System.out.println("欢迎使用本系统,您可以在出门前使用本系统以判断带些什么东西");
    
            java.util.Scanner s = new java.util.Scanner(System.in);
            System.out.print("您所在地方天气是晴天还是雨天:");
            String weather=s.next();
    
            if(weather.equals("雨天")){
                System.out.println("您的性别");
                String gender=s.next();
    
                if(gender.equals("男")){
                    System.out.println("您需要带一把大黑伞");
                }else if(gender.equals("女")){
                    System.out.println("您需要带一把小花伞");
                }else{
                    System.out.println("亲是人妖吗");
                }
            }else if(weather.equals("晴天")){
                System.out.println("室外的温度");
                int tem=s.nextInt();
    
                if(tem > 30){
                    System.out.println("您的性别");
                    String gender=s.next();
    
                    if(gender.equals("男")){
                        System.out.println("您出门前需要戴个墨镜");
                    }else if(gender.equals("女")){
                        System.out.println("您出门前需要涂防晒霜");
                    }else{
                        System.out.println("亲是人妖吗");
                    }
                }else{
                    System.out.println("请您出门请穿个大棉袄");
                }
            }else{
                System.out.println("请看清楚问题呢亲");
            }
    
        }
    }
    
  6. 判断年份是否为闰年

    判断是a是否整除b,余数为0就是整除,a%b0:判断是否整除。a能被b整除:a%b0

    import java.util.Scanner;
    public class Work05162 {
    	public static void main(String[] args) {
    		
    		Scanner input=new Scanner(System.in);
    		
    		System.out.print("输入年份: "); 
    		int year = input.nextInt(); 
    		
    		System.out.print("输入月份:"); 
    		int month = input.nextInt();
    		
    
    		if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
    			System.out.println(year+"年"+month+"月有31天");
    			
    		} else if(month==2&&(year%4==0&&year%100!=0||year%400==0)){
    			System.out.println(year+"年"+month+"月有29天");
    			//判断是否为闰年
    		} else if(month==2&&(year%4!=0||year%100==0&&year%400!=0)) {
    			System.out.println(year+"年"+month+"月有28天");
    			//判断是否为平年,条件是判断闰年条件的完全取反,包括所有运算符和关系
    		} else if(month==4||month==6||month==9||month==11){
    			System.out.println(year+"年"+month+"月有30天");
    			
    		} else {
    			System.out.println("您输入的月份有误"); 
    		}
    	}
    }
    
  7. 交换数据

    public class Work0515 {
    	public static void main(String[] args) {
    		int left=4;
    		int right=5;
    		
    		System.out.println("交换前双手的值");
    		System.out.println("左手的值:"+left);
    		System.out.println("右手的值:"+right);
    		
    		//交换:
    		int middle;
    		
    		middle=left;
    		left=right;
    		right=middle;
    		
    		System.out.println("交换后双手的值");
    		System.out.println("左手的值:"+left);
    		System.out.println("右手的值:"+right);
    	}
    }
    
  8. 检测x,y在哪个象限

    import java.util.Scanner;
    
    public class Work05182 {
    
    	public static void main(String[] args) {
    		Scanner input=new Scanner(System.in);
    
    		System.out.print("请输入x=");
    		double x=input.nextDouble();
    		System.out.print("请输入y=");
    		double y=input.nextDouble();
    		
    		if(x > 0 && y > 0){
    			System.out.print("("+x+","+y+")在第一象限");
    		}else if(x < 0 && y > 0){
    			System.out.print("("+x+","+y+")在第二象限");
    		}else if(x < 0 && y < 0) {
    			System.out.print("("+x+","+y+")在第三象限");
    		}else {
    			System.out.print("("+x+","+y+")在第四象限");
    		}
    		
    		System.out.print("程序结束!");
            
    	}
    }
    
    
  9. 两个数的自由运算

    import java.util.Scanner;
    
    public class Work05183 {
        public static void main(String[] args) {
            Scanner input=new Scanner(System.in);
    
            System.out.print("请输入第一个操作数");
            double a=input.nextDouble();
    
            System.out.print("请输入第二个操作数");
            double b=input.nextDouble();
    
            System.out.print("请输入运算符");
            String c=input.next();
    
            if(c.equals("+")) {
            System.out.println(a+c+b+"="+(a+b));
            	}else if(c.equals("-")) {
            System.out.println(a+c+b+"="+(a-b));
            	}else if(c.equals("*")) {
            System.out.println(a+c+b+"="+(a*b));
            	}else if(c.equals("/")) {
            System.out.println(a+c+b+"="+(a/b));
           		}else if(c.equals("%")) {
            System.out.println(a+c+b+"="+(a%b));
       		 	}
    
    	System.out.println("程序结束");
    	}
    }
    
  10. if语句中只包含一句java语句时

    public class IfText04 {
        public static void main(String[] args){
            boolean sex= true;
    //        if(sex){
    //            System.out.println("男");
    //        }else{
    //            System.out.println("女");
    //        }
            
            //当if语句只有一句时,大括号可以省略不写,
            //if(sex)  System.out.println("男"); else System.out.println("女");
    
            //
            if(sex)
                System.out.println("男");//if语句不加大括号,只包含一条java语句,程序编译到这里自动在if后的第一条语句后加大括号
                System.out.println("呵呵");//这一句是输出语句,不包含在if里。不管以上if是true还是false都会执行此语句
    //      System.out.println("呵呵");    //正常情况下以上语句应该这么写,但这里是为了迷惑所以写成以上形式
            else//程序运行到这里时出错,因为编译器只检查语法,在没有加大括号的if语句中,执行到if时,只包含后面的一条语句。
                  //而这里相当于单独使用了else语句,而java中没有这种语法,所以编译在这里报错
                System.out.println("女");
    
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值