文章目录
1. 流程控制
1.1 概述
程序的流程对运行结果有直接的影响,所以我们必须清楚每条语句的执行流程。
流程: 在一个程序执行的过程中,各条语句的执行顺序。
流程控制:通过控制语句的执行顺序来实现我们要完成的功能。
程序流程图:
又称程序框图,是用统一规定的标准符号描述程序运行具体步骤的图形表示。
程序框图的设计是在处理流程图的基础上,通过对输入输出数据和处理过程的详细分析,将计算机的主要运行步骤和内容标识出来。
流程图标准符号:
1.2 顺序结构
执行流程图如下:
例子:
public class Demo01Sequence{ //Sequence 顺序的意思
public static void main(String[] args){
System.out.println("今天天气不错!");
System.out.println("挺风和日丽的!");
System.out.println("我们下午没课!");
System.out.println("这的确挺爽的!");
}}
2. 判断语句
2.1 单if语句
执行流程图如下:
例子:
public class Demo02SIf{
public static void main(String[] args){
System.out.println("今天天气不错!正在压马路——突然看到一个快乐的地方:网吧!");
int age = 160;
if(age >= 18){
System.out.println("进入网吧,开始嗨!");
System.out.println("遇到一群猪队友,开始骂街!");
System.out.println("感觉不爽,结账走人!");
}
System.out.println("回家吃饭!");
}}
2.2 标准if-else语句
执行流程图如下:
例子:
public class Demo03SIfElse{
public static void main(String[] args){
int num = 30;
if(num % 2 == 0){//如果除以2能够余数为0,说明是偶数。
System.out.println("偶数");
}
else{
System.out.println("奇数");
}
}}
2.3 扩展if-else语句
执行流程图如下:
例子:
// x和y的关系满足如下:
// x>=3 y = 2x + 1;
//‐1<=x<3 y = 2x;
// x<=‐1 y = 2x – 1;
public class Demo04SIfElseExt{ //ext 扩展的意思
public static void main(String[] args){
int x = -10;
int y = 2; //不赋值的内容无法使用
if(x >= 3){
y = 2*x + 1; //程序中2x是错的,应该是2*x。
}
else if(-1 <= x && x <3){
y = 2*x;
}else{
y = 2*x - 1;
}
System.out.println(x);
System.out.println("结果是:" + y); //注意这个写法
}}
语句练习:
/*
指定考试成绩,判断学生等级
90-100 优秀
80-89 好
70-79 良
60-69 及格
60以下 不及格
*/
public class Demo05SIfElsePractise{
public static void main(String[] args){
int score = 69;
if(score < 100 && score >= 90){
System.out.println("分数:" + score + " 优秀");
}else if(score < 90 && score >= 80){
System.out.println("分数:" + score + " 好");
}else if(score < 80 && score >= 70){
System.out.println("分数:" + score + " 良");
}else if(score < 70 && score >=60){
System.out.println("分数:" + score + " 及格");
}else{ //注意为什么会用嵌套
if(score > 100 || score < 0){
System.out.println("分数:" + score + " 错误");
}
else{
System.out.println("分数:" + score + " 不及格");
}
}
}}
2.4 if语句和三元运算符的互换
标准if-else语句,二者选其一;三元运算符也可以做到。
例子:
//题目:使用三元运算符和标准if-else语句分别实现:取两个数字中的最大值
public class Demo06Max{
public static void main(String[] args){
int x = 100;
int y = 20;
int z = x >= y ? x : y;
System.out.println("三元运算符得最大值:" + z);
System.out.println(" ");
if(x >= y){
System.out.println("标准if-else语句得最大值:" + x);
}else{
System.out.println("标准if-else语句得最大值:" + y);
}
}
}
3. 选择语句
3.1 选择语句-Switch
执行流程图如下:
例子:
public class Demo07Switch{
public static void main(String[] args){
int num = 70; //被检测量
switch(num){
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; //强烈建议不省略default的break。
}
}}
3.2 注意事项
switch语句使用的注意事项:
- 多个case后面的数值不可以重复。
- switch后面小括号当中的【被检测值】只能是下列数据类型:
4个基本数据类型: byte/short/char/int
2个引用数据类型: String字符串、enum枚举 - Switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略;匹配哪一个case就从哪一个位置向下执行,直到遇到break或者整体结束为止。
例子:
public class Demo08SwitchNotice{
public static void main(String[] args){
int num = 3;
switch(num){
case 3:System.out.println("你好"); //没有break,将会向下穿透,继续执行后面的代码。
case 1:System.out.println("我好");break;
default:System.out.println("他好,我也好");break;//default不一定是最后,推荐不省略break。在最后才有意义。
case 2:System.out.println("大家好");break;
}
}}
4. 循环语句
4.1 循环概述
循环语句:在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句。
当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
4.2 for循环
执行流程图如下:
循环结构的基本组成部分,一般可以分成四部分:
1. 初始化语句:在循环开始最初执行,而且只做唯一一次。
2. 条件判断:如果成立,则循环继续;如果不成立,则循环退出。
3. 循环体:重复要做的事情内容,若干行语句。
4. 步进表达式语句:每次循环之后都要进行的扫尾工作,每次循环体结束之后都要执行一次。
例子:
public class Demo09For{
public static void main(String[] args){
System.out.println("我错啦!");
System.out.println("我错啦!");
System.out.println("我错啦!");
for(int index = 0;index < 100; index++){ //index 指数
System.out.println("第" + (index+1) + "次:我错啦!");
}
}}
4.3 while循环
while循环有一个标准格式,还有一个扩展格式。
标准格式:
while(条件判断){
循环体
}
扩展格式:
初始化语句;
while(条件判断){
循环体;
步进表达式语句;
}
执行流程图如下:
例子:
public class Demo10While{
public static void main(String[] args){
int i = 0;
while(i<100){
System.out.println("第" + (i+1) + "次:我错啦!");
i++;
}
}}
4.4 do-while循环
do-while循环有两种格式:
标准格式:
do{
循环体
}while(条件判断);
扩展格式:
初始化语句;
do{
循环体语句;
步进表达式语句;
}while(控制语句);
扩展格式执行流程图如下:
4.5 三种循环的区别
三种循环的区别:
1. 如果条件判断从没满足过,那么for循环和while循环将会执行0次,但是do-while循环至少会执行1次。
2. for循环的变量在括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以循环结束之后还能使用。
例子:
public class Demo13LoopDifference{
public static void main(String[] args){
for(int i = 0;i < 0; i++){
System.out.println("Hello! 小张");
}
//System.out.println(i);//错误写法,这时i还没定义
int i = 0;
do{
System.out.println("Hello! 小王");
i++;
}while(i < 0);
System.out.println(i);
}}
4.6 循环控制(跳出)语句
break关键字:
break关键字的用法有常见的两种:
1. 可以用在switch语句当中,一旦执行,整个switch语句立刻结束。
2. 还可以用在循环语句当中,一旦执行,整个循环立刻结束,打断循环。
关于循环的选择,有一个小建议:
凡是次数确定的场景多用for循环,否者用while循环;do-while循环不常用。
例子:
public class Demo14break{
public static void main(String[] args){
for(int i = 1;i < 10;i++){
//如果从第四次开始,后续不要了,打断循环
System.out.println("Hello! 小张" + i);
if(i == 4){
break;
}
}
}}
continue关键字:
另一种循环控制语句是continue关键字:
一旦执行,立刻跳过当次循环剩余内容(一般放在循环体前),马上开始下一个循环。
例子:
public class Demo15Continue{
public static void main(String[] args){
for(int i = 1;i <= 10;i++){
if(i == 4){
continue;
}
System.out.println(i + "楼到了");
}
}}
5. 扩展知识点
5.1 死循环
死循环:永远停不下来的循环就是死循环。
一般出现有两种情况:
- 存心死循环。
- 无心死循环。
死循环的标准格式:
while(true){
循环体;
}
例子:
public class Demo16DeadLoop{ //DeadLoop 死循环
public static void main(String[] args){
for(int i = 1;i <= 10;i++ ){ //i++忘写了。
System.out.println(i + "楼到了");
}
while(true){
System.out.println("I Love You!");
}
//System.out.println("!!!!!!");//无法访问的语句
}}
5.2 循环嵌套
嵌套循环:
是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数 * 内循环次数。
例子:
public class Demo17LoopHourAndMinute{
public static void main(String[] args){
for(int hour = 0; hour < 24;hour++){ //外层控制小时
for(int minute = 0; minute < 60;minute++){ //内层控制分钟
for(int second = 0; second < 60;second++){
System.out.println(hour + ":" + minute +":" + second);
}
}
}
}}
练习:
题目:求出1–100之间的偶数和。求出1–100之间的和以及奇数和。
思路:
- 既然范围已经确定是1–100,那么我就从1、2、3…一直到100一个一个进行检查。
- 总共100个数字,并非所有数字都能使用,必须是偶数才行,判断(if语句)偶数: num % 2 == 0.
- 需要一个变量,用来进行累加操作。也就是一个存钱罐。
public class Demo12HundredSun{
public static void main(String[] args){
int sum1 = 0;
int sum2 = 0;
int sum3 = 0;
for(int i1 = 1;i1 <= 100;i1++){
if(i1 % 2 == 0){
sum1 += i1;
}
}
int i2 = 1;
while(i2 <= 100){
if(i2 % 2 != 0){
sum2 += i2;
}
i2++;
}
int i3 = 0;
do{
sum3 += i3;
i3++;
}while(i3 <= 100);
System.out.println("0--100偶数和是" + sum1);
System.out.println("0--100奇数和是" + sum2);
System.out.println("0--100和是" + sum3);
}}
——此文档为学习笔记!