day06_循环

news2024/11/23 13:37:44

今日内容

零、 复习昨日
一、循环
二、流程控制关键词

零、 复习昨日

8个基本数据类型

变量的使用步骤
1)声明2)赋值3)使用

  1. 声明,数据类型 变量名
    不一定非得是基本类型 int a;
    String s; Scanner scanner;
  2. 赋值,只要符合类型(能默认转换)就能赋值
    int a = 1;
    double d = 1;
    Scanner scanner = new Scanner();
  3. 使用,可以是输出,运算,判断,方法传参等等

&和&&的区别
区别: &,前一个表达式如果错了,后面那个还就会执行
&&,前一个表达式如果错了,后面那个不执行

简述if-else的执行流程

break什么作用
位置: 用在switch,loop中的
作用: 结束/中断/破坏当前结构,让当前结构不执行

作业

 package com.qf.homework;

import java.util.Scanner;

/**
 *
 * @desc 作业
 * ------------------
 * 技巧:
 * 1) 以结果倒推(以最终效果为导向)
 * 2) 把自己带人场景(你写功能,你自己当做客户去用)
 * 3) 尽量减少重复,有重复抽取出来,复用
 */
public class Homework {

    /**
     * 选做题:
     * 模拟超市付款: 商品单价   商品数量
     * 	键盘上输入商品单价,以及商品数量,
     * 		然后计算应付总额
     * 	提示用户可以有4种付款方式
     * 	   不同的付款方式有不同的折扣: 先展示四种付款方式
     * 	   	现金没有折扣
     *      微信 0.95折
     * 	   	支付宝 鼓励金付款金额的10%   鼓励金可以直接折算到付款金额中
     * 	   	刷卡 满100-20
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("  -----------  java2313超市结账系统  ----------- " );
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入商品单价:" );
        double price = scanner.nextDouble( );

        System.out.println("请输入商品数量:" );
        int total = scanner.nextInt( );

        System.out.println("请选择付款方式: ");
        System.out.println("1. 现金,没有折扣");
        System.out.println("2. 微信,0.95折");
        System.out.println("3. 支付宝,9折");
        System.out.println("4. 刷卡 满100-20");
        System.out.print("您的付款方式是:" );
        double money = 0.0;
        int num = scanner.nextInt();
        if (num == 1) {
            System.out.println("您选择的现金支付,没有折扣哦~" );
            money =  price * total ;
        } else if (num == 2) {
            System.out.println("您选择的微信支付,95折哦~" );
             money = price * total * 0.95;
        } else if (num == 3) {
            System.out.println("您选择的支付宝支付,9折哦~" );
            money = price * total * 0.9 ;
        } else if (num == 4) {
            System.out.println("您选择刷卡支付满100减20哦~" );
            if ((price * total) >= 100) {
               money = price * total - 20;
            } else {
               money = price * total;
            }
        } else {
            System.out.println("没有该付款方式!" );
        }
        System.out.println("应付金额:" + money + "元");
    }
}

变量作用域

关于变量,已知

  • 变量要先声明后赋值再使用
  • 变量名可以随便定义,见名知意即可
  • 使用就是拿着变量做输出,运算,判断等等

还有一个注意事项

  • 变量有作用域,即使用范围,就是离它最近的一对儿{} 内,超出范围变量不可用
  • 在范围内可以随便使用,
  • 在范围内不能重复声明,
  • 互不影响的范围有重复声明的变量,没关系

一、循环

还是属于流程控制语句,可以控制代码走向

循环可以做到让某段代码重复执行的功能

实现循环的语句有三种方案:

  • while [重要 ]
  • dowhile [ 了解 ]
  • for[ 最重要]

1.1 while

while , 当型循环,当条件为对,就执行循环

package com.qf.loop;

/**
 * |-----------------------------------------------
 * |  ____   _          _____  _      _  _        |
 * | / __ \ (_)        / ____|| |    (_)(_)       |
 * || |  | | _  _   _ | (___  | |__   _  _  _   _ |
 * || |  | || || | | | \___ \ | '_ \ | || || | | ||
 * || |__| || || |_| | ____) || | | || || || |_| ||
 * | \___\_\|_| \__,_||_____/ |_| |_||_|| | \__,_||
 * |                                   _/ |       |
 * |                                  |__/        |
 * |-----------------------------------------------
 * |                 天道酬勤                     |
 * |             代码敲烂 月薪过万                |
 * L----------------------------------------------
 * <p>
 * 什么时候需要使用循环语句? 代码重复量超过2次,就考虑使用循环语句
 *
 * @desc while循环
 */
public class Demo1 {

    public static void main(String[] args) {
        /**
         * 语法:
         * while (布尔表达式) {
         *     循环内容;
         * }
         * 执行流程:
         * 1) 执行到while开始判断
         * 2) 判断为true,执行{}内,继续回头再判断while后表达式
         * 3) 重复执行第2步,当有一次判断为false,那就结束循环,
         *    执行后续代码
         * 技巧:(循环有四要素)
         * 1) 循环初始值
         * 2) 循环控制条件
         * 3) 循环体
         * 4) 循环迭代(初始值在变化)
         */
        // 打印5遍
        int a = 1; // 循环初始值
        while (a < 6) {// 循环控制条件
            System.out.println("好好学习 day day up");// 循环体
            a++;// 循环迭代
        }
        System.out.println("后续....");
        System.out.println("-----------------");
        // 打印1-10
        int b = 1;
        while (b < 11) {
            System.out.println(b);
            b++;
        }
        System.out.println("-----------------");
        // 输出10-1
        int c = 10;
        while (c > 0) {
            System.out.println(c);
            c--;
        }
        System.out.println("-----------------");

        // 输出1-100中的偶数
        int d = 1;
        while (d < 101) {
            if (d % 2 == 0) {
                System.out.println(d);
            }
            d++;
        }
        System.out.println("-----------------");

        // 输出1-100,每10个数,换一行输出
        // 当输出有好多行,可以使用\t进行制表
        // \t 是转义字符
        int e = 1;
        while (e < 101) {
            System.out.print(e+"\t");
            if (e % 10 == 0) {
                System.out.println( );// 换行
            }
            e++;
        }

        System.out.println("-----------------");
        // 输出1-100的和
        // 1+2+3+4+...+100
        int f = 1;
        int sum = 0;
        while (f < 101) {
          sum = f + sum;
          f++;
        }
        System.out.println("1-100的和:" + sum );
    }
}

1.2 do-while

do-while,直到型循环,直到条件为false就结束循环

语法:

do {
	// 循环体
} while(布尔表达式);

执行:

  1. 先执行do内代码
  2. 后再判断布尔表达式,结果为true,就回头do内代码
  3. 直到判断结果为false,就跳过循环
package com.qf.loop;

/**
 *
 * @desc
 */
public class Demo2 {

    public static void main(String[] args) {

        // 输出1-10
        int a = 1;
        do {
            System.out.println(a );
            a++;
        }while(a < 11);
        System.out.println("--------------" );
        // 10-1
        int b = 10;
        do {
            System.out.println(b );
            b--;
        }while (b > 0);
        System.out.println("--------------" );

        // 1-100偶数和
        int c= 1;
        int sum = 0;
        do {
            if (c % 2 == 0) {
                sum += c;
            }
            c++;
        } while (c < 101);
        System.out.println("1-100的偶数和:" + sum );
    }

}

do-while和while的区别

  • dowhile先执行一次后判断,while先判断如果对后执行
  • 无论如何dowhile至少执行一次
       // 区别
        int d = 1;
        // do {
        //     System.out.println(d );
        //     d++;
        // }while (d < 0);
		// 以上代码会执行一次

        while (d < 0) {
            System.out.println(d );
            d++;
        }
       // 以上代码不会执行 

ps: dowhile不重要,了解即可

1.3 for [重点]

语法:

for(初始值;控制条件;迭代){
   循环体;
}

执行流程:

image-20230925145826833

  1. 先执行初始化(只执行一次)
  2. 接着判断,判断为ture,会向下执行循环体
  3. 执行完后,再向上执行迭代
  4. 迭代完再执行判断,如果为true,继续向下执行(2,3,4步骤重复)
  5. 直到判断为false跳出循环,循环结束
package com.qf.loop;

/**
 * @desc
 */
public class Demo3 {

    public static void main(String[] args) {
        // 输出1-10
        for (int i = 1; i < 11; i++) {
            System.out.println(i);
        }

        // 输出10-1
        for (int i = 10;i > 0;i--) {
            System.out.println(i );
        }

        // 输出1-100的奇数,并每5个奇数换行
        for (int i = 1;i < 101;i++) {
            if (i % 2 == 1) {
                System.out.print(i +"\t");
            }
            if (i % 10 == 0) {
                System.out.println( );
            }
        }

        System.out.println("-----------------" );
        int count = 0;// 计数器
        for (int i = 1;i < 101;i++) {
            if (i % 2 == 1) {
                count++;
                System.out.print(i +"\t");
            }
            if (count == 5) {
                System.out.println( );
                count = 0;
            }
        }

        // 计算1-100的和
        int sum = 0;
        for (int i = 1; i < 101; i++) {
            sum += i;
        }
        System.out.println("sum = " + sum );

    }
}

1.4 双层for循环

package com.qf.loop;

/**
 * @desc
 */
public class Demo4 {

    public static void main(String[] args) {

        /**
         * 4行10列
         * **********
         * **********
         * **********
         * **********
         * 输出语句,只能输出一个*
         */
        // 外层循环控制行数
        for (int i = 1;i < 5;i++) {
            // 内层循环控制列数
            for (int j = 1;j < 11;j++) {
                System.out.print("*" );
            }
            System.out.println( );// 换行
        }
        // 场景: 每层楼,每个宿舍发传单
        /**
         * *
         * **
         * ***
         * ****
         * *****
         * ******
         */
        for (int i = 1;i < 7;i++) {
            for (int j = 1;j <= i;j++) {
                System.out.print("*" );
            }
            System.out.println( );// 换行
        }

        /**
         * ******
         * *****
         * ****
         * ***
         * **
         * *
         */
        for(int i = 1;i < 7;i++){
            for (int j = 6;j >= i; j--) {
                System.out.print("*" );
            }
            System.out.println( );
        }


        /**
         *     *
         *    ***
         *   *****
         *  *******
         * *********
         */
        for (int i = 1;i < 6;i++) {
            for (int k = 4;k >= i;k--){
                System.out.print(" " );
            }
            for (int j = 1;j <= 2*i-1;j++) {
                System.out.print("*" );
            }
            System.out.println( );
        }
        // 打印9*9口诀表
    }
}

1.5 死循环

死循环, 是循环一致执行不再结束

        while(true) {
            
        }

        // 死循环
        // int i = 1;
        // for (;;){
        //     System.out.println(i );
        //     i++;
        // }

        for (int i = 1;;i++){
            System.out.println(i );
        }

1.6 技巧

代码重复要使用循环,那么使用哪一个?

  • 循环次数未知,建议用while
  • 循环次数已知,建议用for

二、流程控制关键词

是指在if,switch,while,for这些流程控制语句中使用的关键词

  • break
  • continue

用来改变语句执行

2.1 break

位置: break只能在switch或者循环中使用

作用: 打断破坏当前结构,使其不执行

  • 中断switch
  • 中断所在这一层循环
package com.qf.loop;

import java.util.Scanner;

/**
 * |-----------------------------------------------
 * |  ____   _          _____  _      _  _        |
 * | / __ \ (_)        / ____|| |    (_)(_)       |
 * || |  | | _  _   _ | (___  | |__   _  _  _   _ |
 * || |  | || || | | | \___ \ | '_ \ | || || | | ||
 * || |__| || || |_| | ____) || | | || || || |_| ||
 * | \___\_\|_| \__,_||_____/ |_| |_||_|| | \__,_||
 * |                                   _/ |       |
 * |                                  |__/        |
 * |-----------------------------------------------
 * |                 天道酬勤                     |
 * |             代码敲烂 月薪过万                |
 * L----------------------------------------------
 *
 * @desc
 */
public class Demo6 {

    public static void main(String[] args) {

        for (int i = 1; i < 11; i++) {
            System.out.println(i);
            if (i == 5) {
                break;
            }
        }
        System.out.println("-----------");
        for (int i = 1; i < 11; i++) {
            for (int j = 1; j < 11; j++) {
                System.out.println("j=" + j);
                if (j == 5) {
                    break;
                }
            }
            System.out.println("i=" + i);
        }
        System.out.println("后续");

        /**
         * 一直录入两个数字,判断大小
         * 直到录入 886 时,结束程序
         */
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.print("请输入数字a:");
            int a = scanner.nextInt( );
            if (a == 886) {
                System.out.println("程序结束,再见");
                break;
            }
            System.out.print("请输入数字b:");
            int b = scanner.nextInt( );
            if (a > b) {
                System.out.println("a大,a=" + a);
            } else if (a < b) {
                System.out.println("b大,b=" + b);
            } else {
                System.out.println("a == b = " + a);
            }
        }
    }
}

2.2 continue

continue 继续

位置: 只能在循环中使用

作用: 中断这一次循环,继续下次循环

练习题


         * ATM机账户,登录
         * ps: 假设666666
         * 1) 最多允许输错5次
         * 2) 在5次内有一次正确,就可以登录成功,程序结束
         * 3) 如果输错,要给出提示语
         *
         * ----------------------------------
         * ps: 可以带入产品经理角色,设计更人性的提示

总结

附录

loop 循环

num 数字

count 计数

total 总共

table 表格

sum 和

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1041218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uni-app问题记录

一、启动问题记录 1. 报错1 解决办法: 开启微信开发者工具服务端口 2. 报错2:调用getLocation获取位置信息时报错以下内容 {errMsg: “getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.json”} 解决办法: manifest.json文…

到广阔的边缘市场去,浪潮信息首次发布全栈边缘计算软硬件新品

出品 | CSDN 云计算 智慧时代&#xff0c;一切皆计算&#xff0c;早已不再是一句口号。据国际研究机构 IDC 数据显示&#xff0c;2023 年超过 50%的企业新增 IT 基础设施会部署在边缘&#xff0c;而 Gartner 研究显示&#xff0c;到 2025 年&#xff0c;超过 75%的数据生成和数…

【ROS入门】使用 ROS 服务(Service)机制实现同步请求与答复

文章结构 任务要求话题模型实现步骤自定义srv定义srv文件编辑配置文件编译 自定义srv调用vscode配置编写服务端实现编写客户端实现 执行启动roscore编译启动客户端和服务端编译启动roscore启动节点 任务要求 编写代码实现 ROS 中的服务请求与答复: 创建服务端&#xff0c;注册…

vue中使用富文本编辑器,@tinymce/tinymce-vue

富文本就是在后台管理系统中常见的录入带格式的内容&#xff0c;如&#xff1a;表格&#xff0c;字体加粗&#xff0c;斜体&#xff0c;文字颜色等等&#xff0c;就像一个word一样。类似于这样的效果&#xff1a; 我们使用通用在线编辑器tinymce。支持vue和react。 1. 安装 np…

opencv形态学-腐蚀

opencv形态学-腐蚀 腐蚀就是取每一个位置结构元领域内最小值作为该位置的输出灰度值&#xff1b; 结构元有很多&#xff0c;一般采用矩形&#xff0c;圆 解析 下图左测是原始图片的灰阶&#xff0c;右边是经过3X3矩形腐蚀后的结果&#xff0c;我们拿19,44,99进行分析&#…

Flink CDC MySQL同步MySQL错误记录

1、启动 Flink SQL [appuserwhtpjfscpt01 flink-1.17.1]$ bin/sql-client.sh2、新建源表 问题1&#xff1a;Encountered “(” 处理方法&#xff1a;去掉int(11)&#xff0c;改为int Flink SQL> CREATE TABLE t_user ( > uid int(11) NOT NULL AUTO_INCREMENT COMME…

关于DDR协议的一些操作的理解4

address 1.DDR中的地址&#xff0c;下表中的*4/ *8/ *16表示的是颗粒位宽。不同位宽的颗粒的行列地址的分步是不一样的。图中的page size表示的就是一行所存储的内容&#xff0c;以64MB*16格式为例&#xff0c;一行一共有10列&#xff0c;每一列存储16bit&#xff0c;也就是2B…

每日一题 146. LRU 缓存

难度&#xff1a;中等 由于周日没做&#xff0c;今天又是困难题&#xff0c;所以假装今天是周日 思路&#xff1a; 在字典结构的基础之上完成三个要求显然题目要求构建一个有序字典&#xff08;当然不使用OrderedDict&#xff09;&#xff0c;由于 key 是唯一的&#xff0c;…

TLS/SSL(六) 非对称密码应用 PKI 证书体系

一 PKI 证书体系 概念&#xff1a; PKI、CA、数字证书、证书链、数字签名之前讲解的公钥不同于https站点所获取的证书,公钥只是数字证书的一部分信息说明&#xff1a; 以下内容仅作为个人笔记 华为云证书管理服务 CCM ① 基础 PKI目前有一系列标准规范定义,主要包括: ② …

lv5 嵌入式开发-6 线程的取消和互斥

目录 1 线程通信 – 互斥 2 互斥锁初始化 – pthread_mutex_init 3 互斥锁销毁 pthread_mutex_destroy 4 申请锁 – pthread_mutex_lock 5 释放锁 – pthread_mutex_unlock 6 读写锁 7 死锁的避免 8 条件变量&#xff08;信号量&#xff09; 9 线程池概念和实现 9.1 …

全栈工程师必须要掌握的前端JavaScript技能

作为一名全栈工程师&#xff0c;在日常的工作中&#xff0c;可能更侧重于后端开发&#xff0c;如&#xff1a;C#&#xff0c;Java&#xff0c;SQL &#xff0c;Python等&#xff0c;对前端的知识则不太精通。在一些比较完善的公司或者项目中&#xff0c;一般会搭配前端工程师&a…

暗月中秋靶场活动writeup

前言 暗月在中秋节搞了个靶场活动&#xff0c;一共有4个flag&#xff0c;本着增长经验的想法参加了本次活动&#xff0c;最终在活动结束的时候拿到了3个flag&#xff0c;后面看了其他人的wp也复现拿到第四个flag。过程比较曲折&#xff0c;所以记录一下。 靶场地址 103.108.…

【sgUploadTileImage】自定义组件:浏览器端生成瓦片图,并转换为File文件序列上传瓦片图

特性&#xff1a; 支持自定义瓦片图尺寸支持显示预览最小尺寸100x100像素大小&#xff0c;切换为实际切割尺寸支持获取切割后的文件Files数组 sgUploadTileImage源码 <template><div :class"$options.name"><div class"sg-ctrl"><di…

使用datax将数据从InfluxDB抽取到TDengine过程记录

1. 编写InfluxDB数据查询语句 select time as ts,device as tbname, ip,device as district_code from "L2_CS" limit 1000 2. 创建TDengine表 create database if not exists sensor; create stable if not exists sensor.water(ts timestamp, ip varchar(50), …

App Inventor 2 模拟sleep函数

App Inventor 2 原生没有 sleep 及相关函数&#xff0c;需要模拟实现&#xff0c;经过测试这里给出一个既简单又相对高效率的实现方案&#xff1a; 需要用到计时器组件&#xff1a; 实现代码如下&#xff1a; 代码原理非常简单&#xff0c;就是计算好要 sleep 到的时刻&#x…

MySQL - 关于约束类型和作用的介绍

约束的概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 约束的作用&#xff1a;用于保证数据库中数据的正确性、完整性和一致性。 约束分类&#xff1a; 约束类型作用关键字非空约束限制该字段的数据不能为nullnot null唯一约束保证该…

UE5 ChaosVehicles载具研究

一、基本组成 载具Actor类名称&#xff1a;WheeledVehiclePawn Actor最原始的结构 官方增加了两个摇臂相机&#xff0c;可以像驾驶游戏那样切换多机位、旋转观察 选择骨骼网格体、动画蓝图类、开启物理模拟 二、SportsCar_Pawn 角阻尼&#xff1a;物体旋转的阻力。数值越大…

C# OpenCvSharp 基于直线检测的文本图像倾斜校正

效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp;namespace OpenCvSharp_基于直线检测的文…

.balckhoues-V-XXXXXXX勒索病毒数据怎么处理|数据解密恢复

引言&#xff1a; 随着网络犯罪的不断演进&#xff0c;勒索病毒已成为当前数字时代的威胁之一&#xff0c;其中包括.balckhoues-V-XXXXXXX勒索病毒。本文将深入介绍.balckhoues-V-XXXXXXX勒索病毒的特点、数据恢复方法以及预防措施&#xff0c;以帮助您更好地理解和应对这一威…

【区块链 | DID】白话数字身份

《十四五数字经济发展规划》提出建立健全政务数据共享协调机制&#xff0c;加快数字身份统一认证和电子证照、电子签章、电子公文等互信互任&#xff0c;推进发票电子化改革&#xff0c;促进政务数据共享、流程优化和业务协同。在数字经济逐渐成形的背景下&#xff0c;推进数字…