Java基本语法 ---- 流程控制

  • 顺序结构
  • 分支结构
  • 循环结构

一、分支结构

1. if - else

  • 1) if   2) if - else   3) if - else if ... else
  • else 结构是可选的,没有 { }情况下,else跟随就近的if
  • 对于条件表达式
    • 如果条件表达式有交集,条件表达式位置需要考虑,小范围在上
    • 如果多个条件表达式没有交集,条件表达式位置与结果无关
        int x = 4;
        int y = 1;
        if (x > 2)
            if (y > 2)
                System.out.println(x + y);
            else
                System.out.println(x);

2. switch - case

  • 根据switch表达式中的值,依次匹配case中的常量,一旦匹配成功则执行case中的语句
  • 当执行完case中的语句后,仍继续向下执行其他case直到遇到break
  • break添加与否是可选的 ,一旦执行到break就跳出switch-case结构
  • switch结构中的表达式只能是6种类型:byte, short, char, int, String, enum
  • case之后只能声明常量,不能声明范围
  • default添加与否是可选的,而且位置是灵活的
        int month = 3;
        switch (month) {
            case 4:
                System.out.print("4");
            case 3:
                System.out.print("3");
            case 2:
                System.out.print("2");
            case 1:
                System.out.print("1");
            default:
                System.out.print("0");
        } // 3 2 1 0

二、循环结构

(一) 三种循环结构

  • 循环语句四部分
    • ① 初始化条件 init_statement
    • ② 循环条件 test_exp (boolean类型)
    • ③ 循环体 body_statement
    • ④ 迭代条件 alter_statement
  • 不在循环条件部分限制次数:for(; ;) / while (true)
  • 结束循环的几种方式
    • 循环条件部分返回false
    • 在循环体中执行break

1. for

  • for (①;②;④) { ③ } 

  • 过程:① → ② → ③ → ④ →  ② → (③ → ④ → ② → ③ → ④ ... ) →  ②

2. while

  • ①  while (②) { ③ ④ }

  • 过程:① → ② → ③ → ④ →  ② → (③ → ④ → ② → ③ → ④ ... ) →  ②

  • 写while循环千万不要丢了迭代条件,否则会出现死循环

3. do while

  • ①  do { ③ ④ } while (②) 

  • 过程:① → ③ → ④  → ② → ③ → ④ →  ② (→ ③ → ④  ... ) →  ②

  • 至少会执行一次循环体

(二)嵌套循环结构

  • 把一个循环结构放在另一个循环的循环体中
    • 外层循环
    • 内层循环
  • 内层循环遍历一次 = 外层循环执行一次
  • 外层控制行数,内层控制列数
        // 输出100以内质数
        label:
        for (int i = 2; i <= 100; i++) {
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    continue label;
                }
            }
            System.out.println(i);
        }

(三)特殊关键字:break、continue

  • break: 结束当前循环体
  • continue: 结束当此循环
  • break / continue 后不能声明执行语句
  • return: 结束当前方法

(四)带label的break、continue

  • 结束指定label的循环体/ 循环
        label:
        for (int i = 0; i < 3; i++) {
            lable1:
            for (int j = 1; j < 5; j++) {
                if (j % 4 == 0) {
                    break label;
                }
                System.out.print(j);
            }
            System.out.println();
        } // 123

三、其他补充

(一)从键盘获取不同类型变量

  • 需要使用Scanner类
  • 对于char型获取,Scanner没有相关方法,只能通过字符串获取
  • 输入数据类型与要求不匹配时,会报异常 java.util.InputMismatchException
import java.util.Scanner; // 1. 导包

public class ScannerTest {
    public static void main(String[] args) {
        // 2. 实例化
        Scanner scanner = new Scanner(System.in);
        // 3. 调用相关方法获取变量
        int num = scanner.nextInt(); // 获取int
        String str = scanner.next(); // 获取String
    }
}

(二)获取随机数

  • Math.random()
  • 返回值为double,区间为[0.0, 1.0)
        // 随机数结果为double型,区间为[0.0, 1.0)
        double value = Math.random(); // [0.0, 1.0)
        // 生成随机二位数
        double value1 = ((int) (Math.random()) * 90 + 10; // [10, 99]
        // 生成[a,b]中的随即谁
        int value = (int) (Math.random() * (b - a + 1) + a);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值