流程控制语句

本文详细介绍了Java编程中的基本概念,包括表达式(变量、常量、运算符和计算)、语句(单语句、复合语句、分支、循环、跳转),以及顺序结构、输入输出操作(如Scanner和格式化输出)和if语句与switch语句的对比。
摘要由CSDN通过智能技术生成

1.表达式 and 语句
         常量、变量代表数据。由变量或常量 + 运算符构成的计算表达式

1.1 表达式一共分为三种:
        (1)变量或常量 + 运算符构成的计算表达式

        (2)new 表达式,结果是一个数组或类的对象。(后面讲)

        (3)方法调用表达式,结果是方法返回值或void(无返回值)。(后面讲)

程序的功能是由语句来完成的,语句分为单语句和复合语句。

1.2 单语句又分为:
        (1)空语句,什么功能都没有。它就是单独的一个分号;(==需要避免==)

        (2)表达式语句,就是表达式后面加分号;

//空语句
;
 
//表达式语句
i++; //自增表达式 + ;
System.out.println("HelloWorld");  //方法调用表达式 + ;
1.3 复合语句分为:
(1)分支语句:if...else,switch...case

(2)循环语句:for,while,do...while

(3)跳转语句:break,continue,return,throw

(4)try语句:try...catch...finally(后面学习)

(5)同步语句:synchronized(后面学习)

2.顺序结构
        顺序结构就是程序从上到下行地执行。表达式语句都是顺序执行的。并且上一行对某个变量的修改对下一行会产生影响。

public static void main(String[] args) {
        int a = 2;
        int b = 3;
 
        System.out.println(a);
        System.out.println(b);
        // 对 a 的值进行修改
        a++;
        System.out.println(a);
        a++;
        System.out.println(a);
 
}
3.输入输出语句
3.1 两种常见的输入输出语句(基础阶段常用)
换行输出
System.out.println(输出内容);  // 输出内容之后,紧接着换行
不换行输出
System.out.print(输出内容);  // 输出内容之后不换行
+ 拼接输出
public static void main(String[] args) {
        // 可以为空,换行
        System.out.println("你好呀!");
        System.out.println("终于要放假了!");
        System.out.println("");
        System.out.println();
        System.out.println("太高兴了!");
 
        // 不可以为空,不换行
        System.out.print("你好呀!");
        System.out.print("终于要放假了!");
        System.out.print("");
        // System.out.print();
        System.out.print("太高兴了!");
 
}

3.2 格式化输出
        占位符: %d : 整数, %f : 浮点数, %c : 单个字符, %b : boolean值, %s : 字符串

public static void main(String[] args){
        System.out.println("+++++++输出多个语句+++++++");
        int age = 20;
        float height = 165;
        String name = "张美丽";
        // 双引号内容,原样输出
        System.out.println("年龄:" + age + ",身高:" + height + ",爱称:" + name);
 
        System.out.println("+++++++++++++printf 格式化输出++++++++++++");
        // 占位符: %d:整数, %f:浮点数, %c:单个字符, %b:boolean值, %s:字符串
        System.out.printf("年龄:%d, 身高%.2f,爱称:%s", age, height, name);
 
        char grade = 'A';
        boolean marry = false;
        System.out.printf("年龄:%d,身高:%.2f,爱称:%s,成绩:%c,婚姻状态:%b", age, height, name, grade, marry);
 
}

3.3 输入语句
键盘输入代码的四个步骤:

        1、申请资源,创建Scanner类型的对象

        2、提示输入xx

        3、接收输入内容

        4、全部输入完成之后,释放资源,归还资源

import java.util.Scanner;
 
/*  扫描对象输入 Scanner:
        nextInt()         整形
        nextFloat()       浮点型
        next()            字符串
        nextLong()        长整型
        nextBoolean()     布尔型
        next().charAt(1)  字符型
*/
public class ScannerCase2 {
    public static void main(String[] args) {
        // 1.整形输入
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入你的年龄:");
        int age = scan.nextInt();
        System.out.println("age:" + age);
        // 2.浮点型
        System.out.print("请输入你的身高:");
        float height = scan.nextFloat();
        System.out.println("身高:" + height);
        // 3.字符串
        System.out.print("请输入你的名言:");
        String solgan = scan.next();
        System.out.println("名言:" + solgan);
        // 4.long 型
        System.out.print("请输入你一年的工资:");
        long salary = scan.nextLong();
        System.out.println("工资:" + salary);
 
        // 5.接受输入的字符
        System.out.println("请输入一个字符:");
        char study = scan.next().charAt(1);
        System.out.println("幸运字符:" + study);
 
        // 6.求球的体积
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入球的半径:");
        double r = scan.nextDouble();
        double v = (double) (4 / 3) * Math.PI * Math.pow(r, 3);
        // Math:是 java 核心基础语法提供的工具方法
        System.out.println("球的半径:" + r + "球的体积:" + (float) v);
        System.out.printf("球的半径:%.2f,球的体积:%.2f", r, v);
 
 
        // 4.结束输入  对象名.close()
        scan.close();
    }
}

4.分支语句
4.1 单分支语句 
        如果表达式为真,执行 if 中的执行语句;如果为假,则不执行

if语句第一种格式: 

if(条件表达式){
    语句体;

4.2 双分支条件判断
        如果表达式条件为真,执行 if 中的执行语句;如果为假,则执行 else 中的执行语句

// if 后允许不带 {} ,如果超过两句执行语句,必须带上 {}


if (age >= 18)
    System.out.println("恭喜你成年了,能去网吧了!");
else
    System.out.println("快快长大吧!");


4.3 多分支条件判断 if ... else if


if语句第三种格式: if...else if ...else


if (判断条件1) {
      执行语句1;
} else if (判断条件2) {
      执行语句2;
}
...
}else if (判断条件n) {
     执行语句n;
} else {
      执行语句n+1;
}


案例:

public static void main(String[] args) {
        // 100 满分; 90-99 优秀; 80-89 良好; 60-79 及格; >60 不及格
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入你的成绩:");
        int score = scan.nextInt();
        if (score == 100) {
            System.out.println("恭喜您获得满分!");
        } else if (score >= 90 && score < 100) {
            System.out.println("优秀");
        } else if (score >= 80 && score < 90) {
            System.out.println("良好");
        } else if (score >= 60 && score < 80) {
            System.out.println("及格");
        } else if (score < 60&&score>=0) {
            System.out.println("继续努力,不及格");
        } else {
            System.out.println("这TM纯粹是来捣乱的!");
        }
}

4.4 if ... else 嵌套
        在if的语句块中,或者是在else语句块中, 又包含了另外一个条件判断(可以是单分支、双分支、多分支)

执行的特点:

        (1)如果是嵌套在if语句块中的 只有当外部的if条件满足,才会去判断内部的条件

        (2)如果是嵌套在else语句块中的 只有当外部的if条件不满足,进入else后,才会去判断内部的条件

public static void main(String[] args){
    System.out.print("请输入年份:");
    int year = scan.nextInt();
    System.out.print("请输入月份:");
    int mon = scan.nextInt();
    scan.close();
    if (year > 0) {
        if (mon > 0 && mon < 13) {
            if (mon == 2) {
                if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                    System.out.println("2月有29天");
                } else {
                    System.out.println("2月有28天");
                }
            } else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) {
                System.out.println(mon + "月有30天");
            } else {
                System.out.println(mon + "月有31天");
            }
        } else {
            System.out.println("请输入正确的月份!");
        }
    } else {
        System.out.println("请您输入正确的年份!");
    }
}

4.5 switch ... case 多分支选择结构
语法格式:

switch(表达式){
    case 常量值1:
        语句块1;
        break;
    case 常量值2:
        语句块2;
        break;   
    ...
    default:
        语句块n+1;
        break;  
}
4.5.1 如何避免 case 穿透
        案例:从键盘输入星期的整数值,输出星期的英文单词

public static void main(String[] args) {
        // 格式化星期几
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int week = scan.nextInt();
        switch (week) {// char 类型可以  String 类型也可
            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;
            default:
                System.out.println("你在搞什么,小傻瓜!");
        }
    }

4.5.2 利用 case 的穿透性
        在switch语句中,如果case的后面不写break,将出现穿透现象,也就是一旦匹配成功,不会在判断下一个case的值,直接向后运行,直到遇到break或者整个switch语句结束,switch语句执行终止。

练习:根据指定的月份输出对应季节

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int season = scan.nextInt();
        scan.close();
 
        // 季节匹配
        switch (season) {
            case 3:
            case 4:
            case 5:
                System.out.println("春季");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏季");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋季");
                break;
            case 12:
            case 1:
            case 2:
                System.out.println("冬季");
                break;
            default:
                System.out.println("你在搞什么,小傻瓜!");
        }
    }

4.6 if 语句与 switch 语句比较
if 语句的条件是一个布尔类型值,if 条件表达式为 true 则进入分支,可以用于范围的判断,也可以用于等值的判断,使用范围更广。

switch 语句的条件是一个常量值(byte , short , int , char ,枚举 , String),只能判断某个变量或表达式的结果是否等于某个常量值,使用场景较狭窄。

当条件是判断某个变量或表达式是否等于某个固定的常量值时,使用 if 和 switch 都可以,习惯上使用 switch 更多。当条件是区间范围的判断时,只能使用if语句。

另外,使用 switch 可以利用穿透性,同时执行多个分支,而 if ... else 没有穿透性。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值