三、分支结构

1 程序流程

尽管现实世界的问题是复杂的、千变万化的,但与之相对应的计算机算法流程只有三种结构。

它们可以解决几乎全部的问题,任何一种编程语言都具备这三种流程结构:

1)顺序结构

2)分支结构(选择结构)

3)循环结构

1.1 顺序结构

当没有任何有关流程控制的语句时,程序从上而下,一行一行地顺序执行

1.2 分支结构

若条件P为真,则执行A,否则执行B

1.3 循环结构

若条件P为真,则执行循环体代码,执行一次完毕后,再次判断条件P是否为真,若为真则执行循环体代码。然后重复上面的过程,直到P为假,退出循环

2 分支结构

根据一定的条件有选择地执行或跳过特定的语句。

简单来说,就是根据不同的情况做出不同的决定

2.1 if 结构

基本语法: 

if(表达式)  {
    语句块
}

流程图:

描述: 当表达式值为ture时,执行语句块A,否则跳过语句块A

语法上,语句块仅有一句代码时,可以省略{},但是一般不建议这么做。

2.2 if-else 结构

世界上最远的距离,是我在if里你在else里,虽然经常一起出现,但却永不结伴执行。

基本语法:

if(表达式)  {
    语句块A
} else {
    语句块B
}

流程图:

描述:表达式为true时,执行语句块A;表达式为false时,执行语句块B

2.3 if-else if- else结构

基本语法:

if(表达式1) {
    语句块1
} else if (表达式2) {
    语句块2
} else if (表达式3) {
    语句块3
}
……
else if (表达式n) {
    语句块n
} else {
    语句块n+1
}

注意:

else if 可以有多个,也可以没有

else 可以有,可以没有

流程图:

2.4 分支结构嵌套

分支结构中还可以按照某些条件继续进行判断。

如果有多个条件同时参与判断,此时可以使用if嵌套来解决。

if嵌套通过外层语句和内层语句的协作,可以增强程序的灵活性

if(条件1) {
    if(条件2) {
        代码块1
    } else {
        代码块2
    }
} else {
    代码块3
}

流程图:

2.5 switch结构

基本语法:

switch(表达式) {
    case 值1:
        语句块1;
        break;
    case 值2:
        语句块2;
        break;
    ……
    case 值N:
        语句块N;
        break;

    [default:
        语句块;
        break;]
}

1)表达式的值必须是以下几种类型之一:

char,byte,short,int,enum,String(Jdk7之后);

不能用boolean,long,float,double等其他类型

2)case子句中的值必须是常量值,不能是一个范围

3)所有case子句中的值不能重复,否则编译出错

4)default子句是可选的

5)break语句用于执行完一个case分支后跳出switch语句块;如果没有,引起case贯穿

2.6 if和switch比较

1)相同点

都可以用于分支判断

2)不同点

switch结构用于处理等值判断的情况

if结构用于判断连续区间的情况

附录

通过 Scanner 类来获取用户的输入

注意:无脑记就行!!!

导包:

写在class的前面

import java.util.Scanner;

Scanner的用法:

// 创建Scanner对象,从键盘接收数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年龄:");
// 接收键盘输入的整数
int age = scanner.nextInt();

// 其他
scanner.nextByte();
scanner.nextShort();
scanner.nextInt();
scanner.nextLong();
scanner.nextFloat();
scanner.nextDouble();
scanner.nextBoolean();

// 接收键盘输入的字符串
scanner.next();
scanner.nextLine();

局部变量

方法或代码块("{}"括起来的语句)中定义的变量成为局部变量

局部变量只在局部范围内有效,它的作用范围从声明开始,直到包含它的代码块结束

局部变量必须声明并且赋值才可以使用

public static void main(String[] args) {
        
    // 局部变量,只在局部范围内有效
    // main方法中定义的局部变量,整个main方法中都可以使用
    int a = 100;
    int b = 20;

    if(a > b) {
        // 代码块中定义的局部变量只在该代码块内有效
        int max = a; // 语句1
        System.out.println(max);
    } else {
        int max = b; // 语句2
        System.out.println(max);
    }
    // 语句1 和语句2在不同的代码块中,变量名相同互不影响
}
public static void main(String[] args) {

    int a = 100;
    int b = 20;

    int max = 0; // 语句1

    if(a > b) {
        // int max = a; // 语句2
        max = a;
    } else {
        max = b;
    }
    System.out.println(max);
    // 语句1和语句2不能同时出现,否则报错
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值