1.switch语句
1.分支语句swtich语句
格式:
switch (表达式) {
case 1:
语句体1;
break;
case 2:
语句体2;
break;
...
default:
语句体n+1;
break; }
执行流程:
-
首先计算出表达式的值
-
其次,和 case 依次比较,⼀旦有对应的值,就会执行相应的语句,在执行的过程中,遇到 break 就会结束。
-
最后,如果所有的 case 都和表达式的值不匹配,就会执行 default 语句体部分,然后程序结束掉。注释:当default没有写在最上部语句中也没有break时,case就会开始穿透,不管值是否对应,他都会一直往下执行语句,知道遇到break或者整体switch语句执行才会结束。(switch表达式可以使用,字节型(byte)、短整型(short)、整形(int)、字符串(String)、字符(char)枚举)。
-
示例代码:
public static void main(String[] args){
// 1. 键盘录⼊数据,使⽤变量接收
Scanner sc = new Scanner(System.in);
System.out.println("请输⼊");
int week = sc.nextInt();
// 2. 多情况判断,采⽤switch语句实现
switch(week){// 3. 在不同的case中,输出对应的日期
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;
}
} }
2.JAVA中的循环结构语句
循环:
循环语句可以在满足循环条件的情况下,反复执行某⼀段代码,这段被重复执行的代码被称为循环体语句,当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将⼀直执行下去,形 成死循环。
1.for循环格式:
for (初始化语句;条件判断语句;条件控制语句) {
循环体语句;
}
格式解释:
- 初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样
- 条件判断语句: 用于表示循环反复执行的条件,简单说就是判断循环是否能⼀直执⾏下去
- 循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情
- 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去
执行流程:
- 执行初始化语句
- 执行条件判断语句,看其结果,是true还是false
- 如果是false,循环结束
- 如果是true,继续执行
- 执行循环体语句
- 执行条件控制语句
- 回到2,继续
示例代码(for案例):
//在控制台输出1-5和5-1的数据
public class ForTest01 {
public static void main(String[] args) {
//需求:输出数据1-5
for(int i=1; i<=5; i++) {
System.out.println(i);
}
System.out.println("--------");
//需求:输出数据5-1
for(int i=5; i>=1; i--) {
System.out.println(i);
}
}
}
for循环水仙花案例-水仙花数
需求:在控制台输出所有的“水仙花数”
解释:什么是水仙花数?
水仙花数,指的是⼀个三位数,个位、⼗位、百位的数字立方和等于原数
例如 153 3*3*3 + 5*5*5 + 1*1*1 = 153
思路:
1. 获取所有的三位数,准备进⾏筛选,最⼩的三位数为100,最⼤的三位数为999,使⽤for循环获取
2. 获取每⼀个三位数的个位,⼗位,百位,做if语句判断是否是⽔仙花数
public class ForTest {
public static void main(String[] args) {
//输出所有的⽔仙花数必然要使⽤到循环,遍历所有的三位数,三位数从100开始,到999结束
for(int i=100; i<1000; i++) {
//在计算之前获取三位数中每个位上的值
int ge = i%10;
int shi = i/10%10;
int bai = i/10/10%10;
//判定条件是将三位数中的每个数值取出来,计算⽴⽅和后与原始数字⽐较是否相等
if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) {
//输出满⾜条件的数字就是⽔仙花数
System.out.println(i);
}
}
}
}
2.while循环
while循环完整格式:
初始化语句;
while (条件判断语句) {
循环体语句;
条件控制语句;
}
while循环执行流程:
- 执行初始化语句
- 执行条件判断语句,看其结果是true还是false
- 如果是false,循环结束
- 如果是true,继续执行
- 执行循环体语句
- 执行条件控制语句
- 回到2继续
示例代码:
public class WhileDemo {
public static void main(String[] args) {
//需求:在控制台输出5次"HelloWorld"
//for循环实现
for(int i=1; i<=5; i++) {
System.out.println("HelloWorld");
}
System.out.println("--------");
//while循环实现
int j = 1;
while(j<=5) {
System.out.println("HelloWorld");
j++;
}
}
3.do while
dowhile完整格式:
初始化语句;
do {
循环体语句;
条件控制语句;
}while(条件判断语句);
执行流程:
- 执行初始化语句
- 执⾏循环体语句
- 执⾏条件控制语句
- 执⾏条件判断语句,看其结果是true还是false
如果是 false ,循环结束如果是 true ,继续执行
-
回到2继续
示例代码:
public class DoWhileDemo {
public static void main(String[] args) {
//需求:在控制台输出5次"HelloWorld"
//for循环实现
for(int i=1; i<=5; i++) {
System.out.println("HelloWorld");
}
System.out.println("--------");
//do...while循环实现
int j = 1;
do {
System.out.println("HelloWorld");
j++;
}while(j<=5);
}
}
三种循环的区别:
- for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
- do...while循环先执行⼀次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
-
条件控制语句所控制的自增变量,因为归属 for 循环的语法结构中,在 for循环结束后,就不能再次被访问到了
-
条件控制语句所控制的自增变量,对于 while 循环来说不归属其语法结构中,在 while循环结束后,该变量还可以继续使用
-
for(;;){}
-
while(true){}
-
do {} while(true);
跳转控制语句
跳转控制语句(break)
跳出循环,结束循环
public class Demo1Continue {
/*
continue : 跳过某次循环体内容的执⾏
注意:使⽤是基于条件控制, 在循环内部使⽤.
需求: 模拟电梯上⾏的过程 1-24层, 4层不停.
*/
public static void main(String[] args){
for(int i = 1; i <= 24; i++){
if(i == 4){
continue;
}
System.out.println(i + "层到了~");
}
}
}
public class Demo2Break {
/*
break : 终⽌循环体内容的执⾏
注意:使⽤是基于条件控制的
break语句只能在循环和switch中进⾏使⽤.
需求: 模拟20岁⼯作到80岁, 60岁退休.
*/
public static void main(String[] args){
for(int i = 20; i <= 80; i++){
if(i == 60){
break; // 结束整个循环
}
System.out.println(i + "岁正在上班");
}
}
}
3.Random
使用步骤:
示例代码:
import java.util.Random;
public class Demo1Random {
/*
Random : 产⽣随机数
1. 导包 : import java.util.Random;
导包的动作必须出现在类定义的上⾯
2. 创建对象 : Random r = new Random();
上⾯这个格式⾥⾯,r 是变量名,可以变,其他的都不允许变
3. 获取随机数 : int number = r.nextInt(10); //获取数据的范围:[0,10) 包括0,不包括10
上⾯这个格式⾥⾯,number是变量名,可以变,数字10可以变。其他的都不允许变
需求: 产⽣随机数1-10之间的*/
public static void main(String[] args){
// 2. 创建对象
Random r = new Random();
for(int i = 1; i <= 10; i++){
// 3. 获取随机数
int num = r.nextInt(10) + 1; // 1-10
System.out.println(num);
}
} }