1.1流程控制语句的概述
1.2流程控制语句的分类
顺序结构:
是代码中的最基本最简单的流程结控制,没有特定的语法结构,按照代码的先后顺序依次执行,大多数的代码都是这样执行的
顺序结构的执行流程:从上往下依次执行
分支结构(if,switch)
循环结构(for,while,do…while)
2. if语句 2.1 if语句格式1:if(关系表达式){
语句体;
}
执行流程:首先计算关系表达式的关系表达式的值
如果关系表达式的值为true就执行语句体
如果关系表达式的值为false就不执行语句体
继续执行后面的语句内容
2.2 if语句格式2if(关系表达式){
语句体1;
}else{
语句体2;
}
首先计算关系表达式的值
如果关系表达式的值为true就执行语句体1
如果关系表达式的值为false就执行语句体2
继续执行后边的语句内容
注意:else的语句后边也有 ;
奇偶数案例:任意给出一个整数用程序实现判断该整数是奇数还是偶数,并输出是奇数还是偶数
格式:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else{
语句体3;
}
执行流程:
首先计算关系表达式1的值
如果值为true就执行语句体1;如果值为false就计算关系表达式2的值如果值为true就执行语句体2;如果为false就执行关系表达式3的值 如果没有任何关系表达式为true 就执行语句体n+1。
例子:
考试奖励案例(注意测试数值):小明快期末考试了,他爸爸对他说,会根据他不同的考试成绩送他不一样的礼物,假如你可以控制小明得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出
95-100 山顶自行车
90-94 游乐场游玩
80-89 变形金刚玩具
八十分以下 大板子
补充:测试的时候要用正确数据,边界数据和错误数据
3. switch语句 3.1 switch 语句格式switch(表达式){
case 值1:
语句体1;
break;
case值2:
语句体2;
break;
…
default:
语句体n+1;
[break;]
}
格式说明:
表达式:取值为byte,short,int,char,JDK5以后可以是枚举,Jdk7以后可以是String
case:后边跟的是和表达式进行比较的值
break:表示中断,结束的意思,用来结束switch语句
default:表示所有的情况都不匹配的时候,就执行该处的内容,和if语句的else相似
执行流程:
首先计算表达式的值
依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行过程中,遇到break就会结束
如果所有case后面的值都不匹配,就会执行default里面的语句体,然后程序结束掉
春夏秋冬案例(case穿透) :一年有十二个月分属于春夏秋冬四个季节,键盘录入一个月份,用程序实现判断该月份属于哪个季节
春:345 夏:678 秋: 9 10 11 冬:1 2 12
错误示范 case后边的数字不能是多个 只能有一个
case穿透
switch(n){
case 3:
case 4:
case 5:
System.out.println("春季");
break;
在switch语句中假如case控制的语句体后边不写break,将出现穿透现象在不判断下一个case值的情况下向下运行直到遇到break或者switch循环结束
二.循环语句 1. for循环 1.1循环结构:特征:
重复做某件事
具有明显的开始和结束的标志
循环结构的组成:
初始化语句:用于表示循环开启时的起始状态,简单说就是循环开始时是什么样子
条件判断语句:表示循环反复执行的条件,简单说就是判断循环能否一直执行下去
循环体语句:用于表示循环反复执行的内容,简单说就是循环反复执行的事情
条件控制语句:用于表示循环执行中每次变换的内容,简单说就是控制循环是否能执行下去
循环结构的语法:
初始化语句:这里可以是一条或多条语句,这些语句可以完成一些初始化操作
条件判断语句:表达式能判断循环体是否执行(例如a<3)
循环体语句:可以是任意语句,将反复执行
条件控制语句:通常是一条语句来改变变量的值(常见的是i++ i–之类的)
1.2 for循环语句格式格式:
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
执行流程
1执行初始化语句
2执行条件判断语句,看其是true还是false
如果是false,循环结束
如果是true,循环继续
3执行循环体语句
4执行条件控制语句
5回到2继续
输出数据案例:在控制台输出1–5和5–1的数
public class Xxx{
public static void main(String[] args){
for(int i=1;i<=5;i++){
System.out.println(i);
}
for(int i=5;i>=1;i--){
System.out.println(i);
}
}
}
求和案例:
求1–5之间数据的和,并把结果在控制台输出:
public class Xxx{
public static void main(String[] args){
int z =0;
for(int i=1;i<=5;i++){
z=z+i;
//System.out.println(z);
}
System.out.println(z);
}
}
输出在循环内和循环外的区别:
z += i;
偶数和案例: public class Xxx{
public static void main(String[] args){
int z =0;
for(int i=1;i<=100;i++){
if(i%2==0){
z += i;
}
//System.out.println(z);
}
System.out.println(z);
}
}
错误点:是i%2 == 0 有两个等号 一个等号是赋值语句
水仙花案例:在控制台输出所有的水仙花数:
什么是水仙花数:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AAP9GBxk-1656672420479)(image-20220630152529426.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aHb8ej9z-1656672420479)(image-20220630152657132.png)]
public class Xxx{
public static void main(String[] args){
int z =0;
int y =0;
int b =0;
int c =0;
for(int i=100;i<=999;i++){
z=(i%10)*(i%10)*(i%10);
y=(i/100)*(i/100)*(i/100);
b=(i/10%10)*(i/10%10)*(i/10%10);
c=z+y+b;
if(c==i){
System.out.println(i+"为水仙数");
}
//System.out.println(z);
}
}
}
学习到的:水仙花数的计算方法
统计案例: public class Xxx{
public static void main(String[] args){
int z =0;
int y =0;
int b =0;
int c =0;
int d =0;
for(int i=100;i<=999;i++){
z=(i%10)*(i%10)*(i%10);
y=(i/100)*(i/100)*(i/100);
b=(i/10%10)*(i/10%10)*(i/10%10);
c=z+y+b;
if(c==i){
d++;
//System.out.println(i+"为水仙数");
}
//System.out.println(z);
}
System.out.println("水仙花数个数为"+d);
}
}
运行结果:
2. while循环语句 2.1while循环语句格式基本格式:
while(条件判断语句){
循环体语句;
}
完整格式:
初始化语句;
while (条件判断语句){
循环体语句;
条件控制语句;
}
执行流程:
执行初始化语句
2执行条件判断语句看其结果是true还是false
如果是false 循环结束
如果是true 继续执行
执行循环体语句
执行条件控制语句
回到2继续
例子:
int j = 1;
while(j<=5){
System.out.println("Hello");
j++;
}
珠穆朗玛峰案例:
public class Xxx{
public static void main(String[] args){
int i = 8844430;
double z = 0.1;
int x = 0;
while(z<=i){
z=z*2;
x++;
}
System.out.println("折叠了"+x+"次");
}
}
错误点:while后括号里的试是运行的要求 不是运行截至的要求
z是0.1 所以要用double
3. do…while循环语句 3.1 do…while循环语句格式基本格式:
do{
循环体语句;
}while(条件判断语句);
完整格式:
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
执行过程:
执行初始化语句
执行循环体语句
执行条件控制语句
执行条件判断语句,看其结果是true还是false
false 循环结束
true 循环继续
回到2继续执行
public class Xxx{
public static void main(String[] args){
int i = 0;
do{
System.out.println("Hello");
i++;
}while(i<5);
}
}
输出五次hello
3.2三种循环的区别死循环:
区别:
while和for是先判断条件是否成立,再进入循环体
do…while循环是先进入循环体在判断
for和while的区别:
for循环中的变量在for循环结束后不能使用
while循环中的变量在循环结束后仍可以使用
4. 跳转控制语句 4.1跳转控制语句概述跳过某次循环体内容的执行
( continue)注意:使用是基于条件控制的
break:终止循环体内容的执行
都是使用在循环中
都有条件判断的
5.循环嵌套 5.1 循环嵌套概述:语句结构:
顺序语句: 以分号结束,表示一句话结束
分支语句: 一对大括号表示if的整体结构 整体描述一个完整的if语句
一对大括号表示switch的整体结构 整体描述一个完整的if语句
**循环结构:**一对大括号表示for的整体结构整体描述一个完整的for语句
一对大括号表示while的整体结构整体描述一个完整的while语句
do while以分号结尾,整体描述一个完整的do while语句
任何语句都可以看成是一个语句一个代码
分支语句中包含分支语句叫做分支嵌套
循环语句包含循环语句叫循环嵌套
public class Xxx{
public static void main(String[] args){
for(int i=0;i<4;i++){
for(int a=0;a<4;a++){
System.out.println(i+"时"+a+"分");
}
}
}
}
外循环控制小时
内循环控制分钟
6. Random 6.1 Random的作用和使用步骤作用:用于产生一个随机数
使用步骤:
导包:
import java.util.Random;
创建对象:
Random r = new Random();
获取随机数:
int number = r.nextInt(10); //获取数据的范围(0-10)不包括0,不包括10猜数字案例
import java.util.Random;
import java.util.Scanner;
public class Xxx{
public static void main(String[] args){
Random R = new Random();
int number = R.nextInt(100)+1;
while(true){
Scanner sc = new Scanner(System.in);
int a=sc.nextInt();
if(a > number){
System.out.println("猜的大了");
}else if(a < number){
System.out.println("猜的小了");
}else{
System.out.println("猜对了");
break;
}
}
}
}
错误点:int a需要在循环内
记得带break;
java
Random r = new Random();
获取随机数: ```java int number = r.nextInt(10); //获取数据的范围(0-10)不包括0,不包括10猜数字案例
import java.util.Random;
import java.util.Scanner;
public class Xxx{
public static void main(String[] args){
Random R = new Random();
int number = R.nextInt(100)+1;
while(true){
Scanner sc = new Scanner(System.in);
int a=sc.nextInt();
if(a > number){
System.out.println("猜的大了");
}else if(a < number){
System.out.println("猜的小了");
}else{
System.out.println("猜对了");
break;
}
}
}
}
错误点:int a需要在循环内
记得带break;



