java的基础语法三

1.分支结构 - if语句

流程控制语句 - 顺序结构

作用: 通过一些语句,来控制程序(代码)的执行流程

流程控制语句分为: 顺序结构, 分支结构(if,switch), 循环结构(for,while,do…while)

顺序结构: 是java的默认执行流程,从上到下,从左到右依次执行

if语句的三种格式:

格式1:

if(关系表达式){语句体};

执行流程: 1).首先计算关系表达式的值

          2).如果表达式的值为true就执行语句体
		  
		  3).如果表达式的值为false就不执行语句体
		  
		  4).继续执行后面的内容

格式2:

if(关系表达式){
  语句体1
  } 
  else{
  语句体2   
  };  
  
执行流程: 1).计算关系表达式的值

          2).如果表达式的值为true就执行语句体1

          3).如果表达式的值为false就执行语句体2

          4).执行后续的内容

格式3:

if(判断条件1){
  语句体1
} else if(判断条件2){
  语句体2	  
}  ......

else{
  语句体n+1	
};

执行流程: 1).首先计算判断条件1的值

          2).如果值为true就执行语句体1,如果值为false就计算判断条件2的值
		  
		  3).如果值为true就执行语句体2,如果值为false就计算判断条件3的值
		  
		  4).......
		  
		  5).如果没有任何判断条件为true,就执行语句体n+1

eg:
1.商场根据消费金额不同,折扣也不同,折扣的规则如下(P代表消费的总金额)
P >= 2000 7折
1000 <= P < 2000 8折
500 <= P < 1000 9.5折
P < 500 不打折
2.要求根据输入的消费金额,输出对应的折扣和折扣前后的金额

    import java.util.Scanner;

public class A {
    public static void main(String[] args) {
        //提示用户输入金额
        System.out.println("请输入金额: ");
        //创建键盘录入对象并接收
        double P =  new Scanner(System.in).nextInt();
        //定义打折后的金额变量
        double discount = 0.0;
        //健壮性判断
        if (P<0){
            System.out.println("您输入的金额有误!请重新输入...");
        } else{
            if (P>=0&&P<500){
                discount = P;
            } else if (P>=500&&P<1000){
                discount = P*0.95;
            }else if (P>=1000&&P<2000){
                discount = P*0.9;
            }else {
                discount = P*0.8;
            }
        }
        //打印结果
        System.out.println("打折后的金额: " + discount);
    }
}

2.switch语句

格式:

switch(表达式){
   case 1:
         语句体1;
		 break;
   case 2:
         语句体2;
		 break;
		 
		 ....
		 
   case n:
         语句体n;
		 break;
   default:
         语句体n+1;
         break;			 
}

格式说明:

表达式: (将要匹配的值) 取值为byte , short , int , char , JDK7以后可以是String

case: 后面跟的是要和表达式比较的值(被匹配的值)

break: 表示中断,结束的意思,用来结束switch语句

default: 表示所有情况都不匹配的时候,就会执行该内容,和if语句的else比较相似

执行流程:

1).首先计算表达式的值

2).依次和case后面的值比较,如果有对应的值,就会执行相对应的语句体,在执行过程中,遇到break就会结束循环

3).如果case后面的值和表达式的值都不匹配的话,就执行default里的语句体,然后结束循环

注意: case后面的值不能重复,而且是常量

eg: 减肥计划

//减肥计划
//导包
import java.util.Scanner;

public class Test{
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        //提示用户输入星期数
        System.out.println("请输入星期数: ");
        //接收数据
        int choice = sc.nextInt();
        //switch语句
        switch (choice){
            case 1:
                System.out.println("跑步");
                break;
            case 2:
                System.out.println("打篮球");
                break;
            case 3:
                System.out.println("游泳");
                break;
            case 4:
                System.out.println("竞走");
                break;
            case 5:
                System.out.println("睡觉");
                break;
            case 6:
                System.out.println("散步");
                break;
            case 7:
                System.out.println("玩游戏");
                break;
        }
    }
}

   如果case中的语句体结尾不加break的话,就会造成case的穿透现象 
   
   case的穿透现象: 当case进行穿透时,后面的case就不会具有匹配效果,内部的语句遇到break才会结束,或者直到循环结束
   
   应用场景: 当发现switch语句中,多个case中的语句体重复,就可以使用case的穿透现象来优化代码
   
eg :减肥计划改进: 假若,周一到周三的计划都是跑步,代码实现如下
//减肥计划
//导包
import java.util.Scanner;

public class Test{
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        //提示用户输入星期数
        System.out.println("请输入星期数: ");
        //接收数据
        int choice = sc.nextInt();
        //switch语句
        switch (choice){
            case 1:
            case 2:
            case 3:
                System.out.println("跑步");
                break;
            case 4:
                System.out.println("竞走");
                break;
            case 5:
                System.out.println("睡觉");
                break;
            case 6:
                System.out.println("散步");
                break;
            case 7:
                System.out.println("玩游戏");
                break;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值