Day3

流程控制:

在一个程序执行过程中,每一个语句都是顺序执行的。程序的流程对我们的结果有着直接的影响,很多时候我们要通过控制语句的执行顺序来实现我们想要实现的功能。

1、顺序执行

根据编写的代码,从上到下执行

2、判断语句

2.1、判断语句if

格式:

if(关系表达式){

​ 语句体;

}

程序语句;

执行流程:先判断关系表达式的结果,如果结果为true,则执行语句体,如果结果为false,那么将跳过语句体。

2.2、判断语句if–else

格式:

if(关系表达式){

​ 语句体1;

}else{

​ 语句体2;

}

执行顺序:首先判断关系表达式结果是否为true,如果为true,那么执行语句体1,如果为false,执行语句体2.

public class Hello {//程序的入口
public static void main(String[] args) {//判断给定的数据是奇数还是偶数int a=1;if(a%2==0){System.out.println("a是偶数");}else{System.out.println("a是个奇数");}System.out.println("程序的结束!");}
}

2.3、判断语句if…else if…

格式:

if(关系表达式1){

​ 语句体1;

}else if(关系表达式2){

​ 语句体2;

}else if(关系表达式3){

​ 语句体3;

}else{

​ 语句体4;

}

执行流程:

首先判断表达式1结果是否为true,如果为true则执行语句体1,如果为false则开始判断表达式2,……直到最后一个表达式语句判断完成,和if–else类似。

public static void main(String[] args) {//x>=3 y=2x+1;//-1<=x<3 y=2x;//x<-1 y=2x-1;int x =3;int y;if (x>=3){y=2*x+1;}else if (x>=-1 && x<3){y=2*x;}else{y = 2*x - 1;}System.out.println("y的值是:"+y);}

2.4、语句练习

public static void main(String[] args) {// 指定考试成绩,判断学生等级// 90‐100 优秀// 80‐89 好// 70‐‐79 良// 60‐69 及格// 60以下 不及格demo();
}
public static void demo(){int score=100;if(score<0||score>100){System.out.println("你这个成绩输入有问题!");}else if(score>=90&&score<=100){System.out.println("你的成绩属于优秀!");}else if(score>=80&&score<90){System.out.println("你的成绩属于好!");}else if(score>=70&&score<80){System.out.println("你的成绩属于良!");}else if(score>=60&&score<70){System.out.println("你的成绩属于及格!");}else{System.out.println("你的成绩不及格!");}
}

2.5、if语句和三元运算的转换

public static void main(String[] args){int a=10;int b=20;//保存我们a和b中的最大值int c;if(a>b){c=a;}else{c=b;}c=a>b?a:b;//和上面一样
}

3、选择语句

switch语句

格式:

switch(表达式){

​ case 常量值1:

​ break;

​ case 常量值2:

​ break;

​ case 常量值3:

​ break;

​ default:

​ 语句体;

​ break;

}

执行流程:

首先比较表达式的值和case后的值是否一致,两者对应则会执行相关的语句,在执行过程中遇见break则会结束跳出,如过表达式的值和任何一个case都不匹配,则会执行default语句体的语句。

public static void main(String[] args) {int weekday=6;//switch语句switch (weekday){case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case 3:System.out.println("星期三");break;case 4:System.out.println("星期四");break;case 5:System.out.println("星期五");break;case 6:System.out.println("星期六");break;case 7:System.out.println("星期日"); break;default:System.out.println("你输入的数字有误!");break;}
}

switch语句

表达式的类型: byte, short, int, char,enum(枚举)

jdk1.7后可以接受字符串

case的穿透性

在switch语句中,如果case后面不写break,将出现穿透现象,也就是不会判断下一个case的值,直接向后运行,直到遇见break或者整体switch结束。

4、循环语句

顺序结构的程序语句只能被执行一次,如果想要同样的操作执行多次,,就需要使用循环结构。

4.1、for循环(重点掌握)

格式:

for(初始化表达式1;布尔表达式2;步进表达式4){

​ 循环体3;

}

执行流程:

1–2--3–4--2–3----------一直到不满足布尔表达式结束。

初始化表达式1:负责完成循环变量的初始化

布尔表达式2:负责判断是否满足循环条件,如果不满足则退出循环

循环体3:具体的执行的语句,即循环的语句

步进表达式:循环后,循环条件涉及的变量发生变化

循环练习:使用循环计算1-100之间的偶数和

public static void demo(){int sum =0;for (int i = 1; i <= 100; i++) {if(i%2 == 0){sum +=i;}}System.out.println("1-100之间的偶数和:"+sum);}

4.2、while循环(重点掌握)

格式:

初始化表达式1;

while(布尔表达式2){

​ 循环体3;

​ 步进表达式4;

}

执行流程:

1–2--3–4--2–3--4—直到不满足我们的布尔表达式时跳出循环

初始化表达式1:负责完成循环变量的初始化

布尔表达式2:负责判断是否满足循环条件,如果不满足则退出循环

步进表达式:循环后,循环条件涉及的变量发生变化

用while计算我们1-100的和

public static void demo(){int sum=0;int i=1;while(i<=100){sum +=i;i++;}System.out.println("1到100的和为:"+sum);}

4.3、do…while循环

初始化表达式0

do{

​ 循环体1;

​ 步进表达式2;

}while(布尔表达式3);

执行流程:

1–2--3–1--2–3—直到不满足布尔表达式条件

do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次

4.4、循环语句的区别

条件语句所控制的变量在for循环结束以后就不能再使用了,而while循环结束以后还可以使用我们的循环变量,原因是for循环结束,该变量从内存中消失,能够提高我们的内存的使用率。

以后遇到的题目,如果知道循环次数,选择用for循环,如果不知道循环的次数,则选择用while循环。

5、跳转语句

break

使用场景:终止我们的switch或者循环的时候。如果离开的我们的实用场景,没有任何意义。

continue

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。

扩展

死循环:

也就是我们的循环条件中条件运算永远为true,死循环就是永远不会结束的循环,例如while(true){}

在后期开发中,会使用死循环的场景,比如我们需要读取用户的输入数据,但是不清楚用户会输入多少数据,此时我们会使用死循环结构,当用户不想输入数据时,就可以用break语句结束我们的循环。

嵌套循环

嵌套循环是指一个循环的循环体里包裹着另一个循环,当有for循环嵌套时,循环的总次数就是外循环的次数*内循环的次数

嵌套循环的格式:
for(初始化表达式1;循环条件2;步进表达式){
循环体1
for(初始化表达式2;循环条件3;步进表达式){
循环体
}
}

打印一个5*8的矩形

//打印一个5*8的矩形 5行 每行8个
//外循环
for (int i = 0; i < 5; i++) {for (int j = 0; j < 8; j++) {System.out.print("*");}//内循环打印8个*,需要换一次行System.out.println();
}

打印一个5行2n-1的三角形

for (int i = 1; i <=5 ; i++) {for (int j = 5; j >i; j‐‐) {System.out.print("   ");//打印空格}for (int k = 0; k <2*i‐1; k++) {System.out.print("*");//打印三角}System.out.println();
}

九九乘法表

for (int i = 1; i < 10; i++) {for (int j = 1; j <= i; j++) {System.out.print(i +"*" +j+ "="+i*j +"   ");}System.out.println();
}//正九九乘法表
for (int i = 9; i >=1; i--) {for (int j = 1; j<=i ; j++) {System.out.print(i+"*"+j+"="+i*j+"    ");}System.out.println();
}//反着的九九乘法表

扩展:

debug运行

关于i++的运算

int i = 0;
for (i++; i++<10; i++);
//for (i++; i<10,i++;i++);从i<10反推最右的i++为9,再循环一次
//比较(此时i=11)完后i记得+1
//i=12
System.out.println(++i);//13

Java_Day3 循环相关推荐

  1. 中兴面试总结,华为。技术,市场

    1,软件测试,如何把这个测试做的更好. 进到一个新项目,作为测试人员应该都是想把测试做好,项目在符合客户质量要求的情况下按时交付的吧.但往往都事与愿违,造成这个结果的原因有很多很多.通过这段时间做自动 ...

  2. Linux shell 学习笔记(9)— 循环语句(for、while)以及更改字段分隔符

    1. for 语句 bash shell 中 for 命令的基本格式如以下,$var 变量包含着这次迭代对应的当前列表项中的值. for var in list docommands done 也可以 ...

  3. 【机器学习】RNN循环神经网络

    循环神经网络归属: 领域:机器学习 方向:自然语言处理 贡献:自动文本生成 循环神经网络实际应用: 生活中因为原始数据都是序列化的,比如自然语言,语音处理,时间序列问题(股票价格)等问题, 这个时候需 ...

  4. MindSpore循环神经网络

    MindSpore循环神经网络 一. 神经网络的组成 神经元模型:首先简单的了解以下构成神经网络的最基础单元:神经元.每个神经元与其它神经元相连,处于激活状态时,就会向相连的神经元发送相应信号.从而改 ...

  5. 循环IRNNv2Layer实现

    循环IRNNv2Layer实现 IRNNv2Layer实现循环层,例如循环神经网络(RNN),门控循环单元(GRU)和长期短期记忆(LSTM).支持的类型为RNN,GRU和LSTM.它执行循环操作,该 ...

  6. CodeGen按钮循环

    CodeGen按钮循环 按钮循环是一个模板文件构造,它允许您迭代CodeGen拥有的按钮信息集合. 在按钮循环中处理的按钮的定义可以来自两个位置之一. 如果基于UI工具箱输入窗口定义进行处理,则默认情 ...

  7. CodeGen标记循环

    CodeGen标记循环 标记循环是一个模板文件构造,它允许您迭代CodeGen拥有的标记信息的集合.为了使用标记循环,必须基于至少定义了一个字段标记的存储库结构生成代码. 标记循环由一对匹配的< ...

  8. CodeGen结构循环回路

    CodeGen结构循环回路 structure循环是一个模板文件构造,它允许您迭代CodeGen拥有的有关结构的集合.为了使用结构循环,必须同时基于多个存储库结构生成代码. CodeGen可以通过以下 ...

  9. CodeGen融合核心关系循环扩展

    CodeGen融合核心关系循环扩展 Expansion Tokens <HARMONYCORE_RELATION_NAME> 插入当前关系的名称.关系名称将自动生成,但可以由Harmony ...

最新文章

  1. 千万级饿了么交易系统架构 5 年演化史!
  2. 直接路径读取对于延迟块清除的影响
  3. matlab 已知函数值纵坐标值(Y值)获得对应的横坐标
  4. js中cookie的操作
  5. P3975-[TJOI2015]弦论【SAM】
  6. Mysql储存过程2:变量定义与参数传递
  7. mysql 42642 安装报错_1/5 MySQL入门总结:下载安装
  8. 处理大并发之四 libevent demo详细分析(对比epoll)
  9. mysql数据库快捷添加外键_mysql 数据库添加外键的几种方式
  10. ospf配置方法及相关问题
  11. 解决Navicat for MySQL 连接 Mysql 8.0.13出现1251- Client does not support authentication protocol 错误
  12. android启动过程之init.rc文件浅析
  13. led显示屏背景墙设计_西安盛泉广告设计制作||发光字标识,门头广告牌,灯箱,LED显示屏...
  14. 打印服务器应用设置指南,打印服务器系统配置教程(1)
  15. Oracle数据库增删改查
  16. 用几何语言表示线段ab的中点c,七年级上册数学第四章教案
  17. 博士读一半,导师跳槽了!博士生把亲身经历发在了Science上
  18. nacos启动报错解决方法
  19. 黑丝,白丝,全都要。某站的视频爬取加合成
  20. TreeMap与TreeSet(初步了解)

热门文章

  1. Linux解压文件到指定目录
  2. move upload file php,php文件上传move_uploaded_file函数
  3. java毕业设计甜心驿站饮品信息管理源码+lw文档+mybatis+系统+mysql数据库+调试
  4. PTA 7-20 打印九九口诀表
  5. 苹果电脑安装XP无声音问题的解决
  6. windows 找不到文件 %windir%\systempropertiesadvanced.exe
  7. php代码加nofollow,帝国cms导航怎么加nofollow
  8. 关于win10第一次开启热点无法访问的原因
  9. 数据结构和算法-2023.07.06
  10. 短视频APP开发:急需了解的注意事项