《Java基础入门 极速版》
ch03 Java流程控制
3.1 顺序执行
所谓的流程控制,其实就是计算机在执行代码时,对指令代码执行顺序的控制。Java种的流程控制主要分为3种:1. 顺序执行;2.分支执行;3.循环执行。
package cn.du.ch03;
public class Java01_FlowControl {
public static void main(String[] args) {
// TODO 1. 顺序执行 :代码出现的先后顺序以及语法的先后顺序
// 变量在使用之前,必须声明并进行了初始化
// System.out.println( i + j ); // 还未声明 爆红
System.out.println("顺序执行【杜老师编制】");
int i = 10;
int j = 10;
System.out.println( i+"+"+j+"="+ (i + j));
//int i2;
//int j2;
//System.out.println( i2 + j2 ); // 没有初始化i2,j2 爆红
}
}
3.2 分支执行
package cn.du.ch03;
public class Java02_FlowControl {
public static void main(String[] args) {
// TODO 流程控制 - 分支执行
System.out.println("单分支执行【杜老师改编】");
// 分支结构
// 1. TODO 可选分支:单分支结构
System.out.println("第一步");
System.out.println("第二步");
// 判断:条件表达式的结果是否为true,如果为true,那么执行分支逻辑,如果为false,继续执行
// 判断的语法使用if关键字,表示如果,在条件表达式前使用,如果结果为true,那么分支逻辑应该在后续的大括号种执行
int 年龄 = 20;
if (年龄 >= 18) {
System.out.println("18岁以上--青年(单分支)");
}
System.out.println("第三步\n");
// 2. TODO 必选分支:双分支结构(二选一)
// 语法上使用if ... else操作,这里的else就表示其他场合
System.out.println("双分支执行【杜老师改编】");
System.out.println("第一步");
System.out.println("第二步");
String 性别 = "男";
if ( 性别.equals("男")) {
System.out.println("帅哥");
} else {
System.out.println("靓女");
}
System.out.println("第三步\n");
// 3. TODO 多分支 : 多重判断
System.out.println("多分支执行【杜老师改编】");
System.out.println("第一步");
System.out.println("第二步");
// if ... else if ... [else]
int 分数 = 59;
if ( 分数 >= 90 ) {
System.out.println("成绩:优秀");
} else if (分数 >= 80) {
System.out.println("成绩:良好");
} else if (分数 >= 70) {
System.out.println("成绩:中等");
} else if (分数 >= 60) {
System.out.println("成绩:及格");
}
else {
System.out.println("成绩:不及格");
}
System.out.println("第三步");
}
}
package cn.du.ch03;
public class Java03_FlowControl {
public static void main(String[] args) {
// TODO 流程控制 - 分支执行
// 特殊的分支结构
// switch ( 数据 ) {}
// switch语法会对数据进行判断,如果等于某一个分支数据的值,那么执行对应分支的逻辑代码
// 如果一个分支都无法匹配,那么一个分支都不会执行,如果想要无法匹配也需要执行分支,那么可以增加default关键字
// 如果执行某一个分支后,不想继续执行其他分支,那么可以使用break关键字,跳出分支结构
System.out.println("多重分支1【杜老师改编】");
System.out.println("第一步");
System.out.println("第二步");
String 学历 = "本科";
switch (学历) {
case "博士研究生" :
System.out.println("你的学历是博士研究生。");
case "硕士研究生" :
System.out.println("你的学历是硕士研究生。");
case "本科" :
System.out.println("你的学历是本科。");
case "大专" :
System.out.println("你的学历是大专。");
case "中专" :
System.out.println("你的学历是中专。");
default:
System.out.println("你的学历是其他。");
}
System.out.println("第三步\n");
System.out.println("多重分支2【杜老师改编】");
System.out.println("第一步");
System.out.println("第二步");
学历 = "硕士研究生";
switch (学历) {
case "博士研究生" :
System.out.println("你的学历是博士研究生。");
break;
case "硕士研究生" :
System.out.println("你的学历是硕士研究生。");
break;
case "本科" :
System.out.println("你的学历是本科。");
break;
case "大专" :
System.out.println("你的学历是大专。");
break;
case "中专" :
System.out.println("你的学历是中专。");
break;
default:
System.out.println("你的学历是其他。");
}
System.out.println("第三步\n");
}
}
package cn.du.ch03;
public class Java04_FlowControl_Test {
public static void main(String[] args) {
// TODO 流程控制 - 分支执行 - 小练习
System.out.println("分支执行练习【杜老师测试】");
int age = 45;
// 儿童(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 < 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 < 66 ) {
System.out.println("中年");
} else {
System.out.println("老年");
}
}
}
3.3 循环执行
【例题5】循环控制举例
package cn.du.ch03;
public class Java05_FlowControl {
public static void main(String[] args) {
// TODO 流程控制 - 重复执行(循环执行)
// 根据条件重复执行某段代码
// Java中主要用于循环的语法有3个:
// 1. while :有条件循环
// while ( 条件表达式 ) { 需要循环的代码 }
// 基本的执行原理:while循环会判断条件表达式的结果是否为true
// 如果为false,跳出循环结构
// 如果为true,会执行大括号内的逻辑代码,代码执行完毕后,会重新对条件表达式进行判断
System.out.println("1. while循环【杜老师改编】");
System.out.println("第一步。循环开始之前");
int age = 35;
while ( age < 40 ) {
System.out.println("循环的代码。当前的age="+age);
age++;
}
System.out.println("第二步。循环结束之后\n");
// 2. do...while
// 语法执行原理和while语法基本相同,区别就在于循环代码是否至少执行一次。
// while循环语法可能执行,可能不执行
// do...while循环语法中的循环代码至少执行一次
/*
基本语法结构:
do {
循环代码
} while (条件表达式)
*/
System.out.println("2. do {} while循环【杜老师改编】");
System.out.println("第一步。循环开始之前");
age = 35;
do {
System.out.println("循环的代码。当前的age="+age);
age++;
} while ( age < 40 );
System.out.println("第二步。循环结束之后\n");
// 3. for
// 如果条件表达式返回结果为false,那么跳过循环语句,直接执行后续代码,如果返回结果为true,那么执行循环代码
// 初始化表达式用于对条件表达式中使用到的变量进行初始化
// 循环代码执行后,会重新进行条件表达式的判断,如果判断结果为true,会重复执行循环代码
/*
for ( 初始化表达式; 条件表达式; 更新表达式 ) {
循环的代码
}
*/
System.out.println("3. for循环【杜老师改编】");
System.out.println("第一步。循环开始之前");
for ( int i = 35;i < 40;i++) {
System.out.println("循环的代码。指针变量i="+i);
}
System.out.println("第二步。循环结束之后");
}
}
【例题6】continue/break语句
package cn.du.ch03;
public class Java06_FlowControl_1 {
public static void main(String[] args) {
System.out.println("for语句测试【杜老师改编】");
// TODO 流程控制 - 重复执行(循环执行)
for ( int i = 0; i < 8; i++ ) {
if ( i == 4 ) {
// 第4不打印
} else {
System.out.println("循环指针i="+i);
}
}
// break关键字直接会跳出循环,不再执行循环后续的操作
// continue关键字直接会跳过当前循环,执行下一次循环
System.out.println("\n break 语句测试");
for ( int i = 0; i < 8; i++ ) {
if ( i == 4 ) {
// 切断,跳出循环
break;
}
System.out.println("循环指针i="+i);
}
System.out.println("\n continue语句测试");
for ( int i = 0; i < 8; i++ ) {
if ( i == 4 ) {
System.out.println("continue之前的语句");
// 返回头部,跳出循环
continue;
}
System.out.println("循环指针i="+i);
}
}
}
【例题7】循环控制小练习----九层妖塔
package cn.du.ch03;
public class Java07_FlowControl_Test {
public static void main(String[] args) {
// TODO 流程控制 - 小练习 九层妖塔
/*
*
***
*****
*******
4 => 0 -> 3
4 => 1 -> 2
4 => 2 -> 1
*/
System.out.println("循环控制小练习----九层妖塔【杜老师改编】");
// 打印第一层的数据
for (int i = 0; i < 1; i++) {
System.out.print("*");
}
System.out.println("");
// 打印第二层的数据
// println方法打印字符串之后,会自动添加换行符
// print方法打印字符串后,不换行
for (int i = 0; i < 3; i++) {
System.out.print("*");
}
System.out.println("");
// 打印第三层的数据
for (int i = 0; i < 5; i++) {
System.out.print("*");
}
System.out.println("");
// 打印第四层的数据
for (int i = 0; i < 7; i++) {
System.out.print("*");
}
System.out.println("\n");
int level = 9;
for ( int j = 0; j < level; j++ ) {
for ( int i = 0; i < (level-1) - j; i++ ) {
System.out.print(" ");
}
for (int i = 0; i < j * 2 + 1; i++) {
System.out.print("*");
}
System.out.println("");
}
}
}
【例题8】循环控制----for each
package cn.du.ch03;
public class Java08_FlowControl {
public static void main(String[] args) {
// TODO 流程控制 - for each
System.out.println("流程控制 - for each【杜老师改编】");
String 直辖市[] = {"北京市", "天津市", "上海市", "重庆市"};
System.out.println("逐个输出一维数组的元素:");
for (String x : 直辖市) {
System.out.println(x);
}
String 区市[][] = {{"新疆", "西藏", "广西", "宁夏", "内蒙古"}, {"北京", "天津", "上海", "重庆"}, {"香港", "澳门"}};
System.out.println("逐个输出二维数组的元素: ");
for (String x[] : 区市) {
for (String y : x)
System.out.printf("%-6s", y);
System.out.println();
}
}
}