文章目录
失败,是正因你在距成功一步之遥的时候停住了脚步。
流程控制:
计算机在执行代码时,对指令代码顺序的控制。
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");