java流程控制知识点_Java开发 流程控制语句【学习篇3】

【作者前言】:13年入圈,分享些本人工作中遇到的点点滴滴那些事儿,17年刚开始写博客,高手勿喷!以分享交流为主,欢迎各路豪杰点评改进!

math?formula=%7B%5Ccolor%7B%233f48cc%7D%7B%5Cpmb%7B%E7%82%B9%E5%87%BB%E5%8F%B3%E4%B8%8A%E8%A7%92%E5%B0%8F%E3%80%901%E3%80%91%E5%BF%AB%E9%80%9F%E9%A2%84%E8%A7%88%E6%9C%AC%E6%96%87%E5%86%85%E5%AE%B9%7D%7D%7D

🔥知识点内容【流程控制语句:条件分支语句、循环语句】

🔓1. 条件分支语句【if、switch/case】

1.1、if语句

①if(表达式){ 当表达式结果为真,所执行的代码 }

表达式中返回的是布尔值

d7923dbac579

image.png

②if(表达式){ 表达式为真执行代码 } else { 表达式为假执行的代码 }

d7923dbac579

image.png

int age = 10;

if (age > 18) {

System.out.println("你已经成年了!");

}else {

System.out.println("小朋友,你妈妈叫你回家吃饭啦!");

}

③if(条件1){ 条件1为真执行的代码 } else if(条件2){ 条件2为真执行的代码 }

Scanner sc = new Scanner(System.in);

// 输入菜名选择序号 select

int select = sc.nextInt();

if (select == 1) {

System.out.println("蒸羊羔");

}else if (select == 2) {

System.out.println("皮蛋豆腐");

}else if (select == 3) {

System.out.println("大馒头");

}else if (select == 4) {

System.out.println("燕窝");

}else {

System.out.println("选择错误,本店没有此菜!");

}

④可以使用多个if语句判断 但是每个条件 不论是否满足 她都要去判断一边,if-else if形式,那么如果有一个条件满足 其他的条件就不去看

1.2、switch语句

有时候分支是根据常量值进行判断的,这时候虽然可以使用if/else来实现,但是用switch/case更为清晰;

Scanner sc = new Scanner(System.in);

// 输入菜名选择序号 select

int select = sc.nextInt();

switch(select) {

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;

}

Break:在switch作用,跳出swtich语句

switch/case中的表达式只能使用规定的基本数据类型,

JDK1.5前可以使用:

基本数据类型byte

基本数据类型short

基本数据类型int

字符型char

不能使用:基本数据类型float、double、long、boolean

JDK5之后,switch表达式类型新增加支持:枚举(enum)

JDK7之后,switch表达式类型新增加支持:String

🔓2. 循环语句【for、while、do while】

2.1、for循环

1)语法

for(初始化语句;判断条件语句;控制语句){

循环体语句块;

}

具体代码如下所示:

int a;

for(int a=0; a<5; a++){

System.out.println("a="+a);

}

执行步骤:

1、初始化a为0;

2、判断a<5的返回值为true,所以执行一次循环体;打印a=0;

3、运行控制语句a++,a变为1;

4、判断a<5的返回值为true,再执行一次循环体;打印a=1;

5、运行控制语句a++,a变为2;

循环4-5步骤,直到打印a=4后,a变为5

6、判断a<5返回false,则循环结束,跳出循环体。

即最终循环执行输出的结果:

a=0

a=1

a=2

a=3

a=4

2)经典案例:for循环的应用

求1~100之间所有整数和

int sum = 0;

for(int i = 1; i < 100; i ++) {

sum += i;

}

System.out.println("1~100的和是:" + sum);

求1-100之间所有奇数的和

int sum = 0;

for(int i = 1; i < 100; i+=2;) {

sum += i;

}

System.out.println("1~100奇数的和是:" + sum);

求阶乘

int n = 6; // 假设求6的阶乘吧

int result = 1; //阶乘的结果值

for(int i = n; i >= 1; i --) {

result *= i;

}

System.out.println(n + "的阶乘是:",result);

如一个数是四位数abcd,该四位数满足条件:(ab+cd)*(ab+cd)=abcd;

分析:

将四位数的百位和千位ab,求出;再将十位和各位cd,求出

abcd / 100 ---> ab

abcd % 100 --->cd

求水仙花数【3位数abc,a^3+b^3+c^3=abc】

for(int i = 100; i <= 999; i ++) {

int b = i / 100; // 百位上的数字

int s = i / 10 % 10;// 十位上的数字

int g = i % 10;// 个位上的数字

// 验证水仙花数公式

if((b * b * b + s * s * s + g * g * g) == i) {

System.out.println("水仙花数为:" + i);

}

}

3)循环嵌套

打印 99 乘法表

for(int j = 1; j < = 9; j ++) {

for(int i = 1; i <= j; i ++) {

System.out.println(i + "*" + j + "=" + (i * j) + "\t");

}

System.out.println(); // 相当于换行了...

}

打印等腰三角形

int n = 4;

for(int i = 1; i <= 4; i ++) {

for(int m = 1; m <= n-i; m++) { // 每一行显示的空格 = 总行数 - 当前行数

System.out.print(" ");

}

for(int j = 1; j <= 2 * i - 1; j++) {// 显示*的数 就是 行数*2 -1

System.out.print("*");

}

System.out.println();// 相当于换行

}

小知识点:

System.out.println(“”) 打印内容 并且 换行

System.out.print(“”)打印内容 不换行

“\t”:制表符 键盘Tab

2.2、while循环

1)语法

while(判断条件语句){

循环体语句块;

控制语句;

}

将for循环三个表达式拆分,初始化放在while 前面初始化 判断语句放入到while的()里面,控制语句放入到while的{}

具体代码如下所示:

int b=0;

while( b<5 ){

System.out.println("b="+b);

b++;

}

2)while循环的应用

求1~100的和

int i = 1;

int sum = 0;

while(i < 100) {

sum += i;

i ++;

}

System.out.println("1~100的和是:" + sum);

小知识点:System.exit(0);退出系统

无限循环(死循环)

while(true) {

System.out.println("----------欢迎来到尛鹏大酒店----------");

System.out.println("1、凉菜");

System.out.println("2、热菜");

System.out.println("3、主食");

System.out.println("4、汤");

System.out.println("0、退出");

System.out.println("----------------------------------");

System.out.println("请选择:")

// 创建Scanner对象

Sanner sc = new Scanner(System.in);

// 接收一下选择的数字

int select = sc.nextInt();

switch(select) {

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;

}

}

Q:for(;;){} 这样的语句会编译通过吗?如果通过,是个什么样的循环?

A:可以编译通过,死循环 相当于

While(true){

}

3)for、while 的使用场景区分

for的使用:当我们知道循环次数的时候;

while的使用:当不清楚循环次数的时候;

2.3、do while循环

1)语法

do{

循环体语句块;

控制语句;

} while(判断条件语句) ;

具体代码如下所示:

int c=0;

do{

System.out.println("c="+c);

c++;

}while(c<5);

d7923dbac579

image.png

2)while 与 do while的区别

如果条件都为真,两者结果没有区别

如果条件为假,do-while 至少会执行一次循环体,while不会执行循环体

Do-while:先执行循环体,再去进行判断

While : 先判断,再去执行循环体

//------------↓↓↓ while ↓↓↓------------

int m = 12;

while(m <= 10) {

System.out.println("while------"+m);

m ++;

}

// 输出结果:嘛也没有

//------------↓↓↓ do while ↓↓↓------------

int i = 12;

do {

System.out.println("do------"+i);

i ++;

}while(i <= 10);

// 输出结果:

// do------12

🔓3. 循环关键字【continue、break】

continue

在循环控制语句的循环体中,可以使用continue语句,表示不再继续循环体后面的代码,继续下一次循环;

即:在循环中遇到了continue,循环就不会继续执行当前关键字下面的其他循环内容,继续执行下一次循环(停止当前次循环,继续下一次循环)

break

在循环控制语句的循环体中,可以使用break语句,表示终止当前循环,跳出循环体;

即:循环终止

🔓4. 多重循环跳出【加标号】

可以在for、while、do前用合法标识符加标号;

用break标号;语句终止指定的循环;

Break+标号形式 终止指定层次的循环

Continue+标号形式 跳出指定层次的循环 继续下一次循环

loop: for(int i = 1; i <= 5; i ++) {

for(int j = 1; j <= 5; j ++) {

if(j == 2) {

continue loop;

// break loop;

}

System.out.println("i = " + i + "\t j=" + j);

}

System.out.println("-------第" + i + "次外层循环结束-------")

}

🔓4. 综合案例 - 实战·了解

百钱买百鸡

/* 3文钱 --- 1只公鸡 x

* 2文钱 --- 1只母鸡 y

* 1文钱 --- 3只小鸡 z

* Q:100文钱 怎么 买到 100只鸡?

* A:

* 只要公鸡的话 100/3 = 33 max=33

* 只要母鸡的话 100/2 = 50 max=50

* 即:公鸡的取值范围 --- 0~33

* 母鸡的取值范围 --- 0~50

*/

for(int x = 0; x < 33; x ++) {

for(int y=0; y < 50; y++) {

//计算小鸡的数量

int z = 100 - x - y;

//小鸡数量的合法性验证

if(z % 3 !=0) continue; //小鸡的数量一定是 3的倍数 不是的话直接进入下一轮循环

// 再验证 钱数是否正确

if(x * 3 + y * 2 + z / 3 == 100) {

//钱数也合法 --- 即算出来了。。。

System.out.println("公鸡:" + x + ",母鸡:" + y + ",小鸡:" + z);

}

}

}

任意数字 各个位数上的 数字之和

abcde ---> a + b + c + d + e = ?

// 设定一个任意的数字

int n = 123456;

int num = n;

// 用来存储最后的和

int sum = 0;

while(n != 0) {

// 取出最后一位数 加入到和中 如123456 % 10 = 6

sum += (n % 10);

// 加完后 将最后一位数 去掉 如 123456 / 10 = 12345

n /= 10;

//... 以此类推

}

System.out.println("输入的数值:" + num + ",各个位数上的数字之和是:" + sum);

求数组中的最大值、最小值

int[] arr = {50,66,25,33,45,18,55};

// 定义一个最大值和最小值

int max = arr[0];

int min = arr[0];

for(int i = 1; i < arr.length; i++) {

if(max < arr[i]) {

max = arr[i];

}

if(min > arr[i]) {

min = arr[i];

}

}

System.out.println("max=" + max + ",min=" + min);

杨辉三角

int n = 10;

int[][] arr = new int[n][n];

for(int i = 0; i < arr.length; i ++) {

arr[i][0] = 1;

arr[i][i] = 1;

if(i == 0) continue;

for(int j = 1; j < arr[i].length; i ++) {

arr[i][j] = arr[i-1][j] + arr[i-1][j-1];

}

}

for(int i = 0; i < arr.length; i ++) {

for(int j = 0; j <= i; j++) {

System.out.println(arr[i][j] + "\t");

}

System.out.println();

}

🔥2.应用场景:

🔥3.实现目标:

🔥4.代码实现:

🔥【知识点回顾·简介】 ↓↓↓

🔑[if语句] ↩

🔑[switch语句] ↩

🔑[for循环] ↩

🔑[while循环] ↩

🔑[do while循环] ↩

🔑[循环关键字continue、break] ↩

🔑[多重循环跳出] ↩

🔑[综合案例·实战] ↩

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值