day03-流程控制

day03-流程控制,第1张

day03-流程控制 day03-流程控制

流程控制语句:Java提供了一些流程控制语句,来控制程序的执行流程

提供了三种控制形式

顺序结构:程序默认

分支结构:if、switch

循环结构:for、while、do while


java-分支结构

if语句

Switch语句

Switch的穿透性


java-分支结构-if语句

根据判定的结果(真或假)决定执行某个分支的代码

if分支有三种格式:

格式1:
int hearBeat= 90;
if (hearBeat < 60 || hearBeat > 100){
    System.out.println("您的心跳数据是:" + hearBeat + "您可能需要进一步检查");
}
格式2:
double money = 1313;
if (money >= 1314){
    System.out.println("您当前发送红包成功");
}else {
    System.out.println("发送失败");
}
格式3:
int score = 90;
if (score >= 0 && score < 60){
    System.out.println("C");
}else if (score >= 60 && score < 80){
    System.out.println("B");
}else if (score >= 80 && score < 90){
    System.out.println("A");
}else if (score >= 90 && score <= 100){
    System.out.println("A+");
}else {
    System.out.println("您录入的分数有误");
}

java-分支结构-Switch语句

也是匹配条件执行分支,适合做值匹配的分支选择,结构清晰,格式良好

执行流程:

    先执行表达式的值,拿这个值去与case后的值进行匹配

    匹配哪个case的值为true就执行哪个case,遇到break就跳出Switch分支

    如果case后的值都不匹配则执行default代码

String weekday = "周日";
switch (weekday){
    case "周一":
        System.out.println("苦逼的第一天上班");
        break;
    case "周二":
        System.out.println("苦逼的第二天上班");
        break;
    case "周三":
        System.out.println("苦逼的第三天上班");
        break;
    case "周四":
        System.out.println("苦逼的第四天上班");
        break;
    case "周五":
        System.out.println("苦逼的第五天上班");
        break;
    case "周六":
        System.out.println("第一天休息");
        break;
    case "周日":
        System.out.println("第二天休息");
        break;
    default:
        System.out.println("数据有误");

if、switch分支各自适合做什么场景:

    if其实在功能上远远强大于switchif适合做区间匹配。switch适合做:值匹配的分支选择、代码优雅。

switch分支注意事项:

    表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。case给出的值不允许重复,且只能是字面量,不能是变量。不要忘记写break,否则会出现穿透现象

switch穿透性

如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性。

存在多个case分支的功能代码一样时,可以用穿透性把流程集中到同一处处理,这样可以简化代码


java-循环结构
    for循环while循环do-while循环死循环循环嵌套

java-循环结构-for循环

控制一段代码反复执行很多次

for ( int i = 0 ; i < 3 ; i ++ ){
    System.out.println("Hello World");
}

执行的流程:

    循环一开始,执行int i = 0 一次4然后判断循环条件:0 < 3 返回true ,进入到循环体中执行输出 :helloWorld ,然后执行迭代语句i++ , 此时i=1了。然后判断循环条件:1 < 3 返回true ,进入到循环体中执行输出 :helloWorld ,然后执行迭代语句i++ , 此时i=2了。然后判断循环条件:2 < 3 返回true ,进入到循环体中执行输出 :helloWorld, 然后执行迭代语句i++ , 此时i=3了。然后判断循环条件:3 < 3 返回false, 循环立即结束!!

for循环案例1:// 需求:计算1-5的和

int sum = 0;
for (int i = 1; i <= 5; i++) {
    sum += i;
     等价于:sum = sum + i
    i == 1  sum = 0 + 1
    i == 2  sum = 1 + 2
    i == 3  sum = 3 + 3
    i == 4  sum = 6 + 4
    i == 5  sum = 10 +5
}
System.out.println(sum); // 15

for循环案例2:求1-10之间的奇数和,并把求和结果在控制台输出。

方式1:

int sum = 0;
for (int i = 1; i <=10 ; i++) {
    if (i % 2 == 1){
        sum += i;
    }
}
System.out.println(sum);

方式2:

int sum1 = 0;
for (int i = 1; i <=10 ; i+=2) {
    sum1 += i;
}
System.out.println(sum);

for循环案例3:在控制台输出所有的“水仙花数”,水仙花数必须满足如下2个要求:

    水仙花数是一个三位数水仙花数的个位、十位、百位的数字立方和等于原数在计算水仙花个数
int count = 0;
for (int i = 100; i <=999 ; i++) {
    int ge = i % 10;
    int shi = i / 10 % 10;
    int bai = i / 100;
    if ((ge*ge*ge + shi*shi*shi + bai*bai*bai) == i){
        System.out.print(i+ "t"); 
        count ++;
    }
}
System.out.println();
System.out.println("水仙花个数是:" + count);

java-循环结构-while循环

什么时候用for循环,什么时候用while循环?

    功能上是完全一样的,for能解决的while也能解决,反之亦然使用规范是:知道循环几次:使用for;不知道循环几次建议使用:while。
int i = 0;
while (i<3){
    System.out.println("hello world");
    i++;
}

while循环案例:

public static void main(String[] args) {
double peakHeight = 8848860;
double paperThickness = 0.1;
int count = 0;
while (paperThickness < peakHeight){
    paperThickness *= 2;
    count ++;
}
System.out.println("折叠的次数:" + count); // 折叠的次数:27
System.out.println("纸张的最终厚度:" + paperThickness); // 纸张的最终厚度:1.34217728E7
}

for和while使用总结:

    其实whie能做的for都能实现但是如果一开始不知道循环次数的情况下,建议使用while循环解决更专业。

java-循环结构-do-while循环

do-while循环的特点:一定会先执行一次循环体

int i = 0;
do {
    System.out.println("Hello world");
    i++;
}while (i < 3);

三种循环的区别:

    for循环 和 while循环(先判断后执行)do…while (第一次先执行后判断)

for和while的区别:

    for循环和while循环的执行流程是一模一样的如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。for循环中,控制循环的变量只在循环中可以使用。While循环中,控制循环的变量在循环后还可以继续使用。

java-循环结构-死循环

一直循环的执行下去,如果没有干预不会停止下来

for循环:

for (;;){
    System.out.println("Hello World");
}

while循环:

while (true){
    System.out.println("我是快乐的死循环");
}

do-while循环

do {
    System.out.println("我是快乐的死循环");
}while (true);

死循环案例:系统密码是100,请用户不断的输入密码验证,验证不对输出密码错误,验证成功输出欢迎进入系统,并停止程序

int okPassword = 100;
// 2. 定义一个死循环让用户不断地输入密码认证
Scanner sc = new Scanner(System.in);
while (true){
    System.out.println("请您输入正确的密码");
    int password = sc.nextInt();
    // 3. 使用if判断密码是否正确
    if (password == okPassword){
        System.out.println("登录成功了");
        break; // 可以立即结束打过去所在循环的结构
    }else {
        System.out.println("密码错误!");
    }
}

java-循环结构-循环嵌套

循环中有包含循环

嵌套循环的特点:

    外部循环每循环一次,内部循环全部执行完一次
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 3 ; j++) {
        System.out.println("我爱你");
    }
    System.out.println("----------------------");
}

循环嵌套案例:在控制台使用 * 打印出4行5列的矩形

for (int i = 0; i < 4; i++) {
    for (int j = 1; j < 5; j++) {
        System.out.print("*");
    }
    System.out.println(); // 换行
}

java-跳转关键字-break、continue

break:跳出并结束当前所在循环的执行。

break注意事项:只能用于结束所在循环,或者结束所在switch分支的执行

for (int i = 0; i < 5; i++) {
    System.out.println("快乐的洗碗");
    if (i == 2){
        break; // 跳出并结束当前循环的执行
    }
}

continue:用于跳出当前循环的当次执行,进入下次循环。

continue注意事项:只能在循环中进行使用

for (int i = 1; i <= 5; i++) {
    if (i == 3){
        continue; // 立即跳出当前执行,进入循环的下一次
    }
    System.out.println("洗碗:" + i);
}

java-案例技术-随机数Random类

Random随机数技术:用于在程序中获取随机数的技术。

使用步骤:

导包:告诉程序去JDK的哪个包中找随机数技术

import java.util.Random;

写一行代码代表得到随机数对象

 Random r = new Random();

调用随机数的功能获取0-9的随机数

 int data = r.nextInt(10);

Random生成随机数的特点:

nextInt(n)功能只能生成:0 – (n-1)之间的随机数

案例:猜数字游戏

需求:随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏

Random r = new Random();
int luckNumber = r.nextInt(100)+1;
Scanner sc = new Scanner(System.in);
while (true){
    System.out.println("请您输入猜测的数据(1-100)");
    int guessNumber = sc.nextInt();
    if (guessNumber > luckNumber){
        System.out.println("猜错的数据过大");
    }else if (guessNumber < luckNumber){
        System.out.println("猜错的数据过小");
    }else {
        System.out.println("恭喜您猜中了");
        break;
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5713309.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存