java基础之if语句

1.流程控制
流程控制是用来控制程序中各语句的执行顺序的。流程控制语句主要分三类:顺序结构、分支结构/条件判断、循环结构
顺序结构:自上而下执行
分支结构:根据条件选择执行。好比我拿到录取通知书我才能上大学。那不到录取通知书能上读大学。条件成立我做什么事,不成立我做什么事。常见的分支语句有 if (单分支 \多分支\ 双分支)和switch语句
循环结构:代码重复执行 ,比如我拿录取通知书前提是不是参加高考,如果高考撘到分数线才能报学校拿通知书,如果分数线不够,是不是需要再复读一年。再参加考试再报专业。常见的循环语句有while、 do-while、 for

2.单分支if语句
2.1语法结构
   布尔表达式要么是true,要么false
   if(布尔表达式){
        代码块;
   }

2.2执行流程
如果条件成立就执行语句块, 如果条件不成立,就不执行语句块,现实生活中, 如果明天下雨就带伞

2.3案例
根据分数判断级别: >=90分,优;>=70分,良;>=60分,中;<60分, 差

import java.util.*;
public class Test01_If{
    public static void main(String[] args){
        /*根据分数判断级别
         >=90分,优
         >=70分,良
         >=60分,中
         <60分, 差
        */
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个分数:");
        //定义分数的变量
        int score=sc.nextInt();
        if(score>=90){
            System.out.print("你的成绩");
            System.out.println("优");
        }
        //50
        if(score<90&&score>=70){
            System.out.println("良");
        }
        if(score<70&&score>=60)
            System.out.println("中");
        if(score<60){
            System.out.println("差");
        }
        System.out.println("程序执行完了");    
    }
}

总结:
1.4个if没有关系,都是独立的,并列关系
2.如果代码块只有一条语句情况下,{}是可以省略  

3.多分支if-else if语句
3.1语法结构
  第一种语法: 
   if(布尔表达式1){
       代码块1;
   }else if(布尔表达式2){
       代码块2;
   }else if(布尔表达式3){
       代码块3;
   }else if(布尔表达式4){
       代码块4;
   }
   .....

  第二种语法:
   if(布尔表达式1){
       代码块1;
   }else if(布尔表达式2){
       代码块2;
   }else if(布尔表达式3){
       代码块3;
   }else if(布尔表达式4){
       代码块4;
   }
   .....
   else{
       代码块;
   }

3.2执行流程
如果布尔表达式1成立, 就执行语句块1
否则, 如果布尔表达式2成立就执行语句块2;
否则, 如果布尔表达式3成立就执行语句块3;
否则就执行语句块n

3.3案例
根据分数判断级别: >=90分,优;>=70分,良;>=60分,中;<60分, 差

import java.util.*;
public class Test02_IfElseIF{
    public static void main(String[] args){
        /*根据分数判断级别
         >=90分,优
         >=70分,良
         >=60分,中
         <60分, 差
        */
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个分数:");
        //定义分数的变量
        int score=sc.nextInt();
        /*
        if(score>=90){
            System.out.print("你的成绩");
            System.out.println("优");
        }
        //50
        if(score<90&&score>=70){
            
        }
        if(score<70&&score>=60)
            System.out.println("中");
        if(score<60){
            System.out.println("差");
        }*/
        if(score>=90||true){
            System.out.print("你的成绩");
            System.out.println("优");
        }else if(score>=70|| true){//else相当于 score<90
            System.out.println("良");
        }else if(score>=60){//else相当于 score<60
            System.out.println("中");
        }else{//else相当于 score<60
            System.out.println("差");
        }
 
        System.out.println("程序执行完了");    
    }
}

总结:
1.if-else if语句当中的else指的是和前面表达式相反条件
2.多分支语句当中永远只会走一个分支,一个分支一旦走完之后,该语句就结束了。

练习:从键盘上读取一个字符,判断这个字符是否为大写字母、小写字母和数字。

import java.util.*;
public class Test03_IfElseIF{
    public static void main(String[] args){
        /*从键盘上读取一个字符,判断这个字符是否为大写字母、小写字母和数字。
           asc码 a~z        A~Z
           a--->97 z---》122    65  90
           97~122 或者 65~90
        */
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符:");
        //定义分数的变量
        char c=sc.next().charAt(0);
        //System.out.println((int)c);
        /*if(c>=97&&c<=122||c>=65&&c<=90){
            System.out.println("输出字符:"+c+"是英文字母");
        }*/
    
        String tem="输出字符:";
        if(c>='A'&&c<='Z'){
            System.out.println(tem+c+"是大写字母");
        }else if(c>='a'&&c<='z'){
            System.out.println(tem+c+"是小写字母");
        }else if(c>='0'&&c<='9'){
            System.out.println(tem+c+"是数字");
        }
 
        System.out.println(c>='A'&&c<='Z'?"大写字母":c>='a'&&c<='z'?"小写字母":c>='0'&&c<='9'?"数字":"");        
        System.out.println("程序执行完了");    
    }
}

4.单分支if-else语句
4.1语法结构
  if(布尔表达式){
        代码块1;
   }else{
        代码块2;
   }

4.2执行流程
如果条件成立就执行语句块1, 否则(条件不成立),就执行语句块2

 4.3案例
判断三位数是不是水仙花

import java.util.*;
public class Test04_IfElse{
    public static void main(String[] args){
        //判断三位数是不是水仙花
        int num=153;
        int ge=num%10;
        int shi=num%100/10;
        int bai=num/100;
        if(num==ge*ge*ge+shi*shi*shi+bai*bai*bai){
            System.out.println("是水仙花");    
        }else{
            System.out.println("不是水仙花");    
        }
 
        boolean b=num==ge*ge*ge+shi*shi*shi+bai*bai*bai?true:false;
        
        System.out.println("程序执行完了");    
    }
}

5.if的嵌套
5.1语法结构
在一个if语句中,又包含另外一个if语句,这就是if语句的嵌套

if(女){
    if(好看){
        if(个高){
        }
    }
 }

5.2案例
如果年龄够7岁,或者年龄够5岁并且性别为男,就可以搬桌子。要求:至少使用两种方法完成

import java.util.*;
public class Test05_Ifs{
    public static void main(String[] args){
        /*
        如果年龄够7岁,或者年龄够5岁并且性别为男,就可以搬桌子。
        要求:至少使用两种方法完成
        1)age>=7
        2)age>=5且 sex='男'
        ==========
        如果年龄>7----》年龄肯定大于5岁
        */
        int age=100;
        char sex='男';
        /*与的优先级高于或
        if(age>=7||age>=5&&sex=='男'){
            System.out.println("能搬桌子");    
        }
        */
        if(age>=7){
            System.out.println("能搬桌子");    
        }else if(age>=5){//age<7    //女
            if(sex=='男'){  //好看的
                System.out.println("能搬桌子");    
            }
        }
        System.out.println("程序执行完了");    
    }
}

6.switch语句
6.1语法结构
switch ( 表达式  ){
    case  常量值1 :
               语句块1;
               break; 
    case  常量值2 :
               语句块2
               break; 
          ......
​    default :
               语句块4;
               break;
}

注意:表达式的值只能是byte short int String/枚举类型

6.2执行流程
1)先计算 switch后面表达式的值, 如果和case后面的常量值匹配,就转到case后面的语句块执行,
2)遇到break语句就会跳出switch结构
3)如果所有的case常量值都不能与switch表达式的值匹配就执行default子句
4) case后面必须跟是的常量表达式
5)各个case常量值不能重复
6)各个case子句没有先后顺序, 即使default子句也可以放在其他的Case子句前面,不管default子句在哪儿,总是在所有的case值都不匹配的情况下才会执行

6.3案例
输入月份,输出该月有多少天

import java.util.*;
public class Test06_Switch{
    public static void main(String[] args){
        //输入月份,输出该月有多少天
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入月份:");
        int month=sc.nextInt();
        switch(month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println(month+"月份"+"31天");
                break;
            case 2:
                System.out.println(month+"月份"+"28/29天");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println(month+"月份"+"30天");
                break;
            
            default:System.out.println("你输入的不是月份");break;
        }
        System.out.println("程序执行完了");    
    }
}

问题1:"穿透",如何防止穿透?
   加break;(中断)
   default(默认)
问题2:default是不是放到所有case语句后面
  不是,但是习惯上放最后一行
问题3:优化(格式、case中重复代码、重复代码提取)

根据分数判断级别0~100

import java.util.*;
public class Test07_Switch{
    public static void main(String[] args){
        /*根据分数判断级别0~100
         >=90分,优  90 91 92 93 94 95 96 97 98 99  
         >=70分,良
         >=60分,中
         <60分, 差
        */
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入月份:");
        int score=sc.nextInt();
        switch(score/10){
            case 10:
            case 9:
                System.out.println("优");
                break;
            case 7:
            case 8:
                System.out.println("良");
                break;
            case 6:
                System.out.println("中");
                break;    
            default:
                System.out.println("差");
                break;
        }
        System.out.println("程序执行完了");    
    }
}

if语句和switch语句区别?
1)表达式是等值的话---》if和switch都可以
   如果表达式是个范围的话---》if
   总结:用if能实现的switch不一定实现,用switch能实现的用if一定能实现
2)swtich应用场景
  就是等值判断并且等值情况比较少的情况: 
  如数字对应星期天、四季
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值