Day03_流程控制语句
- 顺序结构:默认流程
- 分支结构:if、switch
- 循环结构:while,for
1、分支结构
1.1、if分支
if后默认内容为接下来第一行的内容
格式
//格式1
if(条件){
语句;
}
//格式2
if(条件表达式){
执行语句;
}else{
执行语句;
}
//格式3
if(条件表达式){
执行语句;
}else if(条件表达式){
执行语句;
}else if(条件语句)
.
.
.
else{
执行语句;
}
1.2、switch分支
也是匹配条件去执行分支,适合做值匹配。
String weekday = "周三";
switch(weekday){
case "周一":
System.out.println("埋头苦干,解决bug");
break;
case "周日":
System.out.println("休息");
break;
default:
System.out.println("摸鱼")
}
switch分支注意事项
- 表达式只能是byte\short\int\char,jdk5开始支持枚举,jdk7开始支持String不支持double\long\float
- case值不能反复出现,且只能是字面变量,不能出现变量
- 不能忘记break,否则会出现穿透
switch的穿透性
switch穿透性的适应
int month = 7;
switch(month):{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("三十一天");
break;
}
2、循环结构
2.1、for循环
//格式
for(初始化语句;循环条件;迭代语句){
循环体语句
}
//eg
for(int i =0;i < 3;i++){
System.out.println(i);
}
//求1-5之间的数据和,并把结果输出
int sum = 0;
for(int i = 1;i < 6; i++){
sum+=i;
}
System.out.println(sum);
//求1-10之间的奇数和,并把结果输出
int sum = 0;
for(int i = 1 ; i< 11;i++){
if(1 == i%2){
sum+=i;
}
}
System.out.println(sum);
//在控制台输出所有的水仙花数
int count = 0;
for(int i == 100; i <1000; i++){
int ge = i % 10;
int shi = i / 10 %10;
int bai = i / 100;
if ( i == (ge^3 + shi^3 + bai^3)){
System.out.println(i);
count++;
}
}
System.out.println(count);
2.2 、While循环
![image-20220212154111455](../../../../../../%E8%BD%AF%E4%BB%B6/Typora/upload/image-20220212154111455.png)
//格式
while(循环条件){
循环体语句;
迭代语句;
}
//世界最高山峰是珠穆朗玛峰(8848.86米=8848860毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,折叠多少次,可以折成珠穆朗玛峰的高度。
int count = 0;
int start = 1;
long temp = start;
long hight = 88488600;
while(temp <= hight){
temp *= 2;
count++;
}
System.out.prinln(count);
2.3、do-while循环
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P64Ho6IX-1645156555168)(…/…/…/…/…/…/%E8%BD%AF%E4%BB%B6/Typora/upload/image-20220212154708177.png)]
//格式
do{
循环体;
迭代语句;
}while(循环条件);
死循环
一直循环地执行下去,没有干预就不会停止
for(;;){
System.out.println("Hello World!!!");
}
while(true){
System.out.println("Hello World!!!");
}
do{
System.out.println("Hello World!!!");
}while(true);
//需求:系统密码是520,请用户不断输入密码验证系统密码是520,请用户不断的输入密码验证,验证不对输出密码错误,验证成功输出欢迎进入系统,并停止程序。
import java.util.Scanner;
public class Control01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int password;
while(true){
password = sc.nextInt();
if (520 == password){
System.out.println("欢迎进入系统");
}
System.out.println("密码错误!!!");
}
}
}
循环嵌套
循环之中又包含循环
for( int i = 0; i<3;i++){
for(int j = 0;i<5;j++){
System.out.println("我爱你");
}
}
//打印4行5列的矩形
for(int i = 0; i < 4;i++){
for(int j =0;j < 5;j++){
System.out.print("*");
}
System.out.println();
}
3、break与continue
- break:跳出并结束当前所在循环的执行,或者结束所在的switch分支的执行。
- continue:用于跳出当前循环的当次执行,进入下一次循环,只能适用于循环
4、案例技术
4.1、Random随机技术
-
作用:用于在程序中获取随机数的技术
-
使用步骤:
- 导入Random包
- 写一行代码代表获得随机数对象
- 调用随机数的功能函数,获取随机数
-
特点:
-
random.nextInt(X)代表获得0-X范围内的数据,不包括X
-
Random生成区间随机数的技巧加减法
int number = random.nextInt(10)+1;
-
4.2、猜数字游戏
随机生成一个1-100之间的数字,提示用户猜测,直到猜中结束
Random random = new Random();
int number = random.nextInt();
Scanner sc = new Scanner(System.in);
int temp;
do{
temp = sc.nextInt();
switch((temp - number > 0)){
case true:
System.out.println("过大");
break;
case false:
System.out.println("过小");
break;
default:
System.out.println("结果正确");
}
}while(temp != number);
0)){
case true:
System.out.println(“过大”);
break;
case false:
System.out.println(“过小”);
break;
default:
System.out.println(“结果正确”);
}
}while(temp != number);