java ----流程控制语句

在这里插入代码片

2、流程控制

2.1、什么是流程控制

2.1.1、程序的执行结构
  • 顺序结构:

    • 代码从上往下,依次执行。
    • 是程序执行的基本结构。
  • 分支结构:

    • 程序运行到某一个节点,出现了多种继续执行的可能性。通过指定的条件,来决定程序往哪一个方向执行。
  • 循环结构

    • 某一段代码需要被重复执行多次。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrL7b7M6-1582718328637)(C:\Users\Administrator\Desktop\捕获.PNG)]

2.1.2、流程控制的简介

使用指定的控制语句,修改程序的执行结构。

流程控制语句,按照修改的程序执行结构来分,可以分为:分支流程控制语句 (switch)和 循环流程(for、)控制语句。

其中,分支流程控制语句,最常用的是: if-else 和 switch-case

循环流程控制语句,最常用的是: for 和 while

2.2、分支流程控制 - if else

2.2.1、基础语法

语法:

if (condition) {
	// 代码段1
}
else {
	// 代码段2
}
语法说明:
1、 condition:是一个boolean变量,或者是一个boolean结果的表达式。
2、 如果condition为true,则代码段1执行
    如果condition为false,则代码段2执行
3、 可以只有if,没有else。但是不能没有if,只写else。
// 1. 流程控制之 if-else
// 需求:做一个简单的分支结构,如果天气好,就出去玩;否则就回教室学习。
boolean flag = true;
if (flag) {
	System.out.println("明天可以出去玩");
}
else {
	System.out.println("回教室学习");
}

// 需求:判断一个字符是不是一个小写字母,如果是,则将其转成大写输出;否则就输出“不是小写字母”
char c = 'H';

// 判断一个字符是不是一个小写字母
if (c >= 'a' && c <= 'z') {
	System.out.println(c -= 32);
}
else {
	System.out.println("不是小写字母");
}

// 需求:判断一个字符是不是一个数字字符,如果是,将其表示的数字输出,例如:'1' => 1;否则输出“不是数字字符”
char c1 = '2';
if (c1 >= '0' && c1 <= '9') {
	System.out.println(c1 - '0');
}
else {
	System.out.println("不是数字字符");
}
2.2.2、实现多分支

if-else只能做两个分支,如果需要实现多分支,就需要对if-else进行嵌套。

语法特性:
if-else语句中,如果代码段中的代码只有一句。则这个大括号可以省略。

如果需要使用if-else做多分支,可以使用 else if 语法
if (contion1) {

}
else if (condition2) {

}
else if (condition3) {

}
...
else {

}
int score = 7;

if (score < 0 || score > 100) {
	System.out.println("错误成绩");
}
else if (score < 60) {
	System.out.println("不及格");
}
else if (score < 70) {
	System.out.println("中");
}
else if (score < 80) {
	System.out.println("良");
}
else if (score < 90) {
	System.out.println("优");
}
else {
	System.out.println("秀");
}
2.3、分支流程控制 - switch case

2.3.1、基础语法
switch (variable) {
	case value1:
	case value2:
	...
	default:
}
语法说明:
1、variable:是一个变量,可以是任意的类型。但是,不能是浮点型。
2、执行逻辑:检测变量variable的值,如果和某一个case匹配上了,则执行这个case后面的语句。如果变量variable的值没有和任意的一个case匹配上,则执行default之后的语句。
3、default不是必须的。
2.3.2、穿透性

switch-case语句具有穿透性。如果switch的变量的值,和某一个case匹配上了,则会执行从这个case开始往后所有的语句,会向下穿透。并且,在向下穿透的时候,不会和后面的case进行匹配。

穿透性,是一把双刃剑,有利有弊。

任何规避穿透性:使用关键字break;

switch中,程序在向下穿透执行的时候,如果遇到break,会结束穿透,立即停止这个switch。
int season = 1;

switch (season) {
	case 1:
		System.out.println("春天");
		break;
	case 2:
		System.out.println("夏天");
		break;
	case 3:
		System.out.println("秋天");
		break;
	case 4:
		System.out.println("冬天");
		break;
		
	default:
		System.out.println("错误的季节");
		break;
}

2.3.3、switch和if的区别

switch语句和if语句,都能实现分支结构。那么在用到分支的时候,该如何选择?

通过条件选择:

如果分支的条件,是一个区间。这种情况下,使用if-else;

如果分支的条件,是一个确切的值。这种情况下,可以使用switch-case,也可以使用if-else。

2.4、循环流程控制 - for

2.4.1、循环的要素

实例:小明在操场上跑步,跑1000米。这个过程,其实就是一个循环。

循环的起点:

每一个循环都需要找到一个循环的起点。这个条件是必不可少的,如果没有这个条件,将无法开始一个循环。

循环的条件:

循环其实是一个重复判断条件成立的过程,如果条件成立,则代码段需要重复执行。

循环的步长:

循环中,一定需要维护一个变量,来控制循环的次数。每一次的循环,一定要适当的修改这个变量值。

2.4.2、循环的使用场景

某一个代码段需要被多次执行,并且多次执行之间是有一定的规律的。

2.4.3、for循环的基础语法
for (循环起点; 循环条件; 循环步长) {
	// 循环体
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B5o95cmM-1582718328640)(./images/for.png)]

// 实例:在控制台输出1到100之间的每一个数字
for (int n = 1; n <= 100; n++) {
	System.out.println(n);
}

// 实例:计算 1+2+3+4+5+...+100 的和
int sum = 0;
for (int n = 1; n <= 100; n++) {
	sum += n;
}
System.out.println(sum);

// 实例:在控制台输出1到100之间所有的偶数
for (int i = 1; i <= 100; i++) {
	if (i % 2 == 0) {
		System.out.println(i);
	}
}

for (int i = 2; i <= 100; i += 2) {
	System.out.println(i);
}

// 实例:判断一个数字是不是质数
// 质数:如果一个数字,只能够被1和他自己整除,那么这个数字就是一个质数。最小的质数是2
int number = 17;

boolean flag = true;	// 假设所有的数字都是质数
for (int i = 2; i <= number / 2; i++) {
	if (number % i == 0) {
		flag = false;
		break;
	}
}

if (flag) {
	System.out.println("是一个质数");
}
else {
	System.out.println("不是一个质数");
}

高级的语法:

for的小括号中,包含有三部分内容。每一部分的内容都可以省略。
但是,分号不能省略。

int i = 1;
for (;;) {
	System.out.println(i);
	if (++i > 100) {
		break;
	}
}

2.5、循环流程控制 - while

2.5.1、while循环的基础语法

也是实现循环结构的常见的语法。while的基础语法如下:

while (condition) {
	// 循环体
}

语法说明:
1、condition:是一个boolean类型的变量,或者是boolean结果的表达式。
2、执行逻辑:判断条件condition是否成立,如果成立,执行循环体,再判断;如果不成立,结束循环。

// 使用while循环的综合案例:
int n = 1;
while (n <= 100) {
	System.out.println(n++);
}

2.5.2、while和for循环的使用场景
  • 如果循环的次数非常明确,建议使用for循环。
  • 如果循环的次数不明确,但是循环的条件非常明确,推荐使用while循环。
// 计算一个十进制数字有多少位?
// 12345 -> 1234 -> 123 -> 12 -> 1 -> 0
int number = 127338274;
int count = 0;		// 记录位数
while (number != 0) {
	number /= 10;
	count++;
}

System.out.println(count);

2.5.3、do-while

do-while循环和while循环基本是一样的。语法如下:

do {
	// 循环体
} while(condition);

语法说明:
先执行一次循环体,再判断循环条件是否成立。如果条件成立,继续执行循环体;如果条件不成立,结束循环。
如果初始的condition是false,则do-while比while多执行一次循环体。

2.6、循环控制

2.6.1、continue

写在循环体中,如果循环在执行的过程中遇到了continue,则立即停止本次的循环,进入下次的循环。

// continue: 小明在操场上跑100米,当跑到50米的时候,看到地上有个坑,跳过这个坑继续跑。
for (int meter = 0; meter <= 100; meter++) {
	
	if (meter == 50) {
		System.out.println("诶呀,上次我是不是摔在这里了?");
		// 立即停止本次的循环,开始下一次的循环
		continue;
	}
	
	System.out.println("小明在跑步,跑了" + meter + "步");
}

2.6.2、break

写在循环体中,表示结束循环。如果循环执行的过程中遇到了break,需要立即结束这个循环,无论循环条件是否成立。

// break: 小明在操场上跑100米,当跑到了50米的时候,摔了一跤,不再继续跑了。
for (int meter = 0; meter <= 100; meter++) {
	System.out.println("小明在跑步,跑了" + meter + "步");
	if (meter == 50) {
		System.out.println("诶呀,小明摔了一跤");
		break;
	}
}

2.6.3、循环标签(了解)

给一个循环添加一个标签,标签一般情况下没有任何作用。但是配合break或者continue使用,会有奇效。

break的作用是结束循环,但是如果应用在嵌套的循环中,只能结束一层循环。break写在了哪一个循环中,break就停止哪一个循环。如果需要结束多层循环,需要配合标签使用。

outter:
for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 3; j++) {
		System.out.println("i = " + i + ", j = " + j);
		if (j == 1) {
			break outter;	// 停止指定标签的循环
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值