听说看完这篇文章的程序员再也不会抱怨分支与循环结构难了~不信看看就知道了!
2020-03-31 18:39
831 查看
文章目录
一、分支结构
1. if分支结构【重点】
基本if选择结构
- 语法
if(布尔表达式){ //代码块 }
- 执行流程:
对布尔表达式进行判断;
结果为true,则先执行代码块,再执行后续代码;
结果为false,则跳过执行代码块,直接执行后续代码 - 案例
main(){ System.out.print("请输入一个数:"); Scanner s = new Scanner(System.in); int n = s.nextInt(); if(n % 2 == 0){ System.out.print("偶数"); } }
if else选择结构
- 语法
if(布尔表达式){ //代码块1 }else{ //代码块2 }
- 执行流程:
对布尔表达式进行判断;
结果为true,则先执行代码块1,在退出整个结构,执行后续代码 - 案例
main(){ System.out.print("请输入一个数:"); Scanner s = new Scanner(System.in); int n = s.nextInt(); if(n % 2 == 0){ System.out.print("偶数"); }else{ System.out.print("奇数"); } }
多重if结构
- 语法
if(布尔表达式1){ //代码块1 }else if(布尔表达式2){ //代码块2 }else if(布尔表达式3){ //代码块3 }else{ //代码块4 }
-
执行流程:
表达式1为true,则执行代码块1,再退出整个结构;
表达式2为true,则执行代码块2,再退出整个结构;
表达式3为true,则执行代码块3,再退出整个结构;
以上均为false,则执行代码块4,再退出整个结构;相互排斥,有一个为true,其他均不再执行,适用于区间判断
-
注意
elseif个数根据开发需求确定;
最后else根据开发需求决定是否定义(不是必须写的)判断条件之间互斥. - 如果 if后面的{ }中只有一条语句,则可以省略{};
但是省略之后,if中的条件只对仅跟着{ }后面的一条语句起作用,即使是空语句
( ; 代表一个语句)。
案例
main(){ System.out.print("请输入一个数:"); Scanner s = new Scanner(System.in); int n = s.nextInt(); if(n < 0){ System.out.print("数据错误!"); System.exit(0); } if(n <= 2){ System.out.print("婴儿"); }else if(n <= 12){ System.out.print("儿童"); }else if(n <= 40){ System.out.print("青年"); }else if(n <= 60){ System.out.print("中年"); }else{ System.out.print("老年"); } }
if嵌套结构
- 语法
if(外层表达式){ if(内层表达式){ //内层代码块1 }else{ //内层代码块2 } }else{ //外层代码块 }
- 执行流程:
当外层条件满足时,再判断内层条件一个选择结构中,可嵌套另一个选择结构
嵌套格式正确的情况下,支持任意组合 - 注意
先判断外层if的条件,条件成立,则判断内层if条件…
2. switch…case分支结构(等值分支)
- 语法
switch(变量|表达式){ //变量int,表达式的值可以为byte,short,int,char case 值1: //逻辑代码1; case 值2: //逻辑代码2; case 值n: //逻辑代码n; default: //未满足case时的逻辑代码; }
-
执行流程:
如果变量中的值等于值1,则执行逻辑代码1;
如果变量中的值等于值2,则执行逻辑代码2;
如果变量中的值等于值3,则执行逻辑代码3;
如果变量中的值没有匹配的case值时,执行default中的逻辑代码。
所有case的取值不可相同 -
注意
a. switch后面()中表达式的结果类型
byte/short/int/char;
JDK7.0及以上版本支持String的结果类型。 - b. break:终止、中断,break应用再switch…case结构中代表终止、跳出switch…case结构。
- c. default没有位置限制,可以写在 swtich结构{}中的case或是case都可以,所以建议 default后面的break不省略。
案例
main(){ Scanner s = new Scanner(System.in); int a = s.nextInt(); switch(a){ case 1: System.out.println(1); case 2: System.out.println(2); case 3: System.out.println(3); default: System.out.println("Others"); } }
二、循环结构
1. 循环的理解
概念通过某一个条件,重复并且有规律的执行一段代码。
循环组成循环变量的初始化、循环的条件、循环变量的改变(递增/递减)、循环体。
2. while循环(不确定循环)
- 语法
while(布尔表达式){ //逻辑代码(循环操作 ) }
- 执行流程:
先对布尔表达式进行判断,结果为true,则执行逻辑代码;
本次执行完后,再次进行判断,结果仍旧为true,则再次执行逻辑代码;
直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码 - 特点
先判断,再执行,执行次数0~n次 - 如果循环中,没有对循环变量进行改变,可能会出现死循环
- 循环中需要累加数据之和,则定义累加器,通常初始化数据为0;
而且累加器需要定义在循环的外面。
- 案例
main(){ int i = 1;//循环变量 int result = 0; while(i<=100) { result = result +i; i++; } System.out.println(result); }
3、do while循环
- 语法
do{ //逻辑代码(循环操作) }while(布尔表达式);
- 执行流程:
先执行一次循环操作后,再进行布尔表达式的判断;
如果结果为true,则再次执行循环操作;
如果结果为false,才会退出循环结构,执行后续代码 - 特点
先执行,再判断。执行的次数为 1~n次
- 案例
main(){ int i = 1;//循环变量 do{ result =result+i; i++; }while(i<=100){ System.out.println(result); } }
4、for循环(确定循环)
- 语法
for(初始部分;循环条件;迭代部分){ //;;不能省略 //循环操作 }
- 执行流程:
先对布尔表达式进行判断,结果为true,则执行逻辑代码;
本次执行完后,再次进行判断,结果仍旧为true,则再次执行逻辑代码;
直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码 - 特点:先判断,再执行,执行次数:0~n次
- 注意 a. 循环变量的初始化可以定义在循环的外面,但是for后面()中的分号不能省略。定义在for后面()中的循环变量只能在当前循环结构中被使用,循环一旦结束,循环变量失效,节省内存空间;如果将循环变量定义在for的外面,扩大了循环变量的作用范围,可能造成空间浪费。
- b. 如果循环条件省略,则默认条件为true,可能出现死循环现象。
- c. 循环变量的改变可以定义在 for的{}中,但是避免多次对循环变量for(循环变量的初始化;循环条件;循环变量的改变)
main(){ for(int i = 1;i <= 100;i++){ result = result +i; } System.out.println(result); }
5、嵌套循环
概念在循环结构中嵌套一个完整的循环结构。(一个循环结构的循环体又是一个循环)
外层循环次数*内层循环次数
循环嵌套打印图形- 外层循环
控制图形的行数 - 内层循环:控制图形的列数
- break:结束、终止本层循环
- continue:中止跳出本层的本次循环,从而进入本层下一次循环
- 案例
//嵌套循环 main(){ for(int i = 1;i <= 10;i++){ for(int j = 1;j <= 5;j++) { if(i == 4 && j==3) break; System.out.print("i="+i+"j"+j+"\t"); } System.out.println(); } }
//流程控制关键字 main(){ for(int i = 1;i <= 10;i++){ if(i == 9) break; System.out.println("HelloWorld"+i); } for(int i = 1;i <= 10;i++){ if(i == 9) continue; System.out.println("HelloWorld"+i); } }
//流程控制关键字案例 //外层循环 //outer: for(int i=1;i<=3;i++){ //内层循环 //inner: for(int j=1;j<=5;j++){ if(j==3){ continueouter;//中止、跳出外层循环的本次循环,进入外层循环的下一次 } System.out.println("i="+i+",j="+j); } }
//流程控制关键字案例 //外层循环 //outer: for(int i=1;i<=3;i++){ //内层循环 //inner: for(int j=1;j<=5;j++){ if(j==3){ breakouter;//终止、结束外层循环结构 } System.out.println("i="+i+",j="+j); } }
三、局部变量【重点】
概念
- 定义在函数/方法/初始化代码块内部的变量
- 目前:定义在函数内部的变量称为局部变量
特点
- 局部变量必须先赋值再使用
错误提示:可能尚未初始化变量 - 作用范围
从定义它的位置开始,到定义它的代码块结束
超出范围使用,提示错误:找不到符号 - 命名冲突
在重合的作用范围内,不允许命名冲突(有同名的变量名)
错误提示:已在函数 main(String[])中定义了变量
扩充
- 随机数生成(Random)
位于java.util包中
导入包:import java.util.Random;
- 创建Random对象
Random rd=new Random();
- 使用rd生成整数
int n=rd.nextInt(n); //自动生成0~n-1的数据
整理不易,喜欢请点个赞!
编者微信:1014961803,添加时请备注"CSDN"
- 点赞 3
- 收藏
- 分享
- 文章举报
相关文章推荐
- 癌症信号--知道这些,你将永远不会得上癌症(之所以将文章发布在这里,是希望广大的程序员兄弟要珍惜自己身体,因为身体才是革命的本钱)
- 你想成为架构师吗?看看这篇文章吧——《架构师最怕程序员知道的十件事》
- 你想成为架构师吗?看看这篇文章吧——《架构师最怕程序员知道的十件事》
- 实验 4 在分支循环结构中调用自定义函数
- android:onTouch()和onTouchEvent()的区别?看完这篇文章就知道了
- Java基础(三):修饰符、运算符、循环结构和分支结构
- C++学习笔记(第三章 多分支结构 循环程序设计 之一)
- java从零复习第二节(二) 流程控制之顺序结构,分支结构,循环结构
- shell脚本1——分支结构、循环、函数
- 分支结构和循环结构
- 零基础学习JavaSE03:分支结构+循环结构
- 分支结构与循环结构
- 实验 3 简单的分支与循环结构
- C语言基础(四)分支结构、循环结构
- Java入门(1) —— 变量、运算符、分支结构和程序员思维的理解
- 实验四 在分支循环结构中调用自定义函数
- 作业 2 分支、循环结构 第5题
- 作业 3 应用分支与循环结构解决问题 五级制成绩对应的百分制成绩
- 听说懂以太坊开发的程序员都被抢疯了!分享一篇价值10万的文章,来自10年经验的大咖对以太坊数据存储的思考与解读
- 【作业3】应用分支与循环结构解决问题