2、流程控制


Java零基础极速入门-讲师:海波

失败,是正因你在距成功一步之遥的时候停住了脚步。


流程控制

计算机在执行代码时,对指令代码顺序的控制。

1、顺序执行

在这里插入图片描述

代码出现的先后顺序以及语法的先后顺序。

int i = 10;
int j = 20;
System.out.println( i + j );

2、分支执行

在这里插入图片描述

分支执行:程序中出现多条可以执行的分支,当满足分支执行条件,就可以执行分支。

2.1、单分支结构

在这里插入图片描述

// 单分支结构
System.out.println("第一步");
System.out.println("第二步");
// 判断:条件表达式的结果是否为true,为true,执行分支,为false,不执行分支。
// 判断的语法:if(条件){执行内容}
int i = 10;
if ( i == 10 ) {
	System.out.println("分支");
}
System.out.println("第三步");

2.2、双分支结构

在这里插入图片描述

// 双分支结构
System.out.println("第一步");
System.out.println("第二步");
// 判断:条件表达式的结果是否为true,为true,执行分支1,为false,执行分支2。
// 判断的语法:if(条件){执行内容}else{执行内容}
// else:其它的场合
int i = 10;
if ( i == 10 ) {
	System.out.println("分支1");
} else {
	System.out.println("分支2");
}
System.out.println("第三步");

2.3、多分支

在这里插入图片描述

// 多分支结构
System.out.println("第一步");
System.out.println("第二步");
// 判断:条件表达式1的结果是否为true,为true,执行分支1,
// 		条件表达式2的结果是否为true,为true,执行分支2,
// 		条件表达式3的结果是否为true,为true,执行分支3,
// 		都为false,执行分支4,
// 判断的语法:if(条件){执行内容}else if(条件){执行内容}else if(条件){执行内容}else if(条件){执行内容}else{执行内容}
int i = 10;
if ( i == 10 ) {
	System.out.println("分支1");
} else if( i == 20 ) {
	System.out.println("分支2");
} else if( i == 30 ) {
	System.out.println("分支3");
} else{
	System.out.println("分支4");
}
System.out.println("第三步");

2.4、特殊的多分枝

在这里插入图片描述

// 特殊分支结构
// switch(数据){}
// switch语法会对数据进行判断,如果等于某一个分支的数据的值,那么执行对应分支的逻辑代码。
// 如果一个分支都无法匹配,那么一个分支都不会执行,如果想要无法匹配也有一个分支能执行,可以增加default关键字。
System.out.println("第一步");
System.out.println("第二步");
int i = 10;
switch(i){
	case 10: // case只能做等值判断,无法像if做范围判断
		System.out.println("分支1");
		// 执行分支1后,不想在执行后面的分支,可以使用break;跳出分支结构。
		// break;
	case 20:
		System.out.println("分支2");
		// break;
	case 30:
		System.out.println("分支3");
		// break;
	default: // 当前三个条件不满足,一定会执行分支4
		System.out.println("分支4");
}	
System.out.println("第三步");

2.5、练习

给程序一个年龄,让程序判断这个年龄的人,处于那个成长阶段。

int age = 30;
// 儿童(0~6)、少年(7~17)、青年(18~40)、中年(41~65)、老年(66+)
// if...else if...else if...else:多分支判断
// switch...case...case...default:等值分支判断
if( age <7 ){
	System.out.println("儿童");
}else if( age >= 7 && age <18){
	System.out.println("少年");
}else if( age >= 18 && age <41){
	System.out.println("青年");
}else if( age >= 41 && age <65){
	System.out.println("中年");
}else if( age >= 66){
	System.out.println("老年");
}else{
	System.out.println("年龄输入有误");
}

// 可以优化
if( age <7 ){
	System.out.println("儿童");
}else if( age <18){
	System.out.println("少年");
}else if( age <41){
	System.out.println("青年");
}else if( age <65){
	System.out.println("中年");
}else if( age >= 66){
	System.out.println("老年");
}else{
	System.out.println("年龄输入有误");
}

3、重复执行

根据条件重复执行某一段代码

3.1、while

在这里插入图片描述

// 有条件循环
// 语法结构:while( 条件表达式 ){ 需要循环的代码 }
// 基本的执行原理:while循环会判断条件表达式的结果是否为true
// 为true:会执行大括号内的逻辑代码,执行完毕后,会重新对条件表达式进行判断。
// 为false:会跳出循环结构
System.out.println("第一步");
int age = 30;
while ( age < 40 ) {
	System.out.println("循环的代码");
	// 为了不出现死循环,让判断结果可变。 
	age++;
}
System.out.println("第三步");

3.2、do-while

// 语法结构:
/*
do {
循环结构
} while (条件表达式)
*/

// 基本的执行原理:和while基本相同,区别即使条件不成立,也可以运行一次。
// while循环语句可能执行,可能不执行
// do...while循环语法的循环代码至少执行一次

System.out.println("第一步");
int age = 30;
do {
	System.out.println("循环的代码");
	age++;
} while ( age < 40 )
System.out.println("第三步");

3.3、for

// 语法结构:for(初始化表达式; 条件表达式; 更新表达式){循环代码}
// 初始化表达式用于对条件表达式中使用到的变量进行初始化
// 如果条件表达式返回结果为false,跳出循环语句,执行后续代码,返回结果为true,执行循环代码。
// 循环代码执行后,会重新进行条件表达式的判断,如果判断结果为true,会重复执行循环代码
// 基本的执行原理:
System.out.println("第一步");
for(int age = 30; age < 40; age++){
	System.out.println("循环的代码");
}
System.out.println("第三步");

3.4、break和continue

// break:跳出循环,不在执行后续的操作。

// 循环打印0~9
for ( int i = 0; i < 10; i++ ) {
	// 让4不出现
	if ( i == 4) {
		// 跳出循环结构,后面全都不循环。
		break;
	} else {
		System.out.println(i);
	}
}
// continue:跳过当前的循环,执行下一次操作。

// 循环打印0~9
for ( int i = 0; i < 10; i++ ) {
	// 让4不出现
	if ( i == 4) {
		continue;
	}
	System.out.println(i);
}

3.5、小练习:九层妖塔

// 九层妖塔
/* 九层妖塔效果
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
*****************
每次*出现的次数
1-1
2-3
3-5
4-7
5-9
6-11
7-13
8-15
9-17
*/
// System.out.print("*");向控制台输出,不换行。
// System.out.println();向控制台输出,并换行。

// 层数
int level = 9;
for (int j = 0; j < level; j++) {
    // 空格部分循环
    for (int a = level - 1; a > j; a--) {
        System.out.print(" ");
    }
    // *部分循环
    for (int i = 0; i < j * 2 + 1; i++) {
         System.out.print("*");
    }
    // 每层换行
    System.out.println();
}

在这里插入图片描述

3.6、小练习:打印九九乘法表

// 分析:乘数 * 被乘数 = 结果
//一次 1*1=1
//二次 2*1=2	2*2=4
//三次 3*1=3	3*2=6	3*3=9	
// 被乘数 应该小于等于 乘数
// 外层循环:乘数
for (int i = 1; i < 10; i++) {
    // 内层循环:被乘数 被乘数上限<=乘数
    for (int j = 1; j <= i; j++) {
        // 打印算式
        System.out.print(i + "*" + j + "=" + (i * j)+"\t");
    }
    // 对一行结果换行
    System.out.println("");
}

关于打印九九乘法表(即使你是打印出来的,也证明你努力思考过了,而且这种输出的结果和题目要求的结果也一样。)

System.out.println("1*1=1");
System.out.println("2*1=2\t2*2=4");
System.out.println("3*1=3\t3*2=6\t3*3=9\t");
System.out.println("4*1=4\t4*2=8\t4*3=12\t4*4=16\t");
System.out.println("5*1=5\t5*2=10\t5*3=15\t5*4=20\t5*5=25\t");
System.out.println("6*1=6\t6*2=12\t6*3=18\t6*4=24\t6*5=30\t6*6=36");
System.out.println("7*1=7\t7*2=14\t7*3=21\t7*4=28\t7*5=35\t7*6=42\t7*7=49");
System.out.println("8*1=8\t8*2=16\t8*3=24\t8*4=32\t8*5=40\t8*6=48\t8*7=56\t8*8=64\t");
System.out.println("9*1=9\t9*2=18\t9*3=27\t9*4=36\t9*5=45\t9*6=54\t9*7=63\t9*8=72\t9*9=81\t");
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值