day06_循环

今日内容

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

零、 复习昨日

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-10int b = 1;while (b < 11) {System.out.println(b);b++;}System.out.println("-----------------");// 输出10-1int 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+...+100int 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-10int a = 1;do {System.out.println(a );a++;}while(a < 11);System.out.println("--------------" );// 10-1int 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-10for (int i = 1; i < 11; i++) {System.out.println(i);}// 输出10-1for (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.rhkb.cn/news/145826.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国庆加速度!新增功能点锁定功能,敏捷开发新增估算功能,助力项目快速突破!

大家好&#xff0c;CoCode开发云旗下Co-Project V3.6智能项目管理平台正式发布&#xff0c;平台新增功能点锁定功能、敏捷开发模式新增估算板块和两种估算方式。 功能点锁定功能进一步提高了项目估算的灵活性和准确性&#xff0c;有利于提高项目估算效率&#xff1b;而敏捷开发…

RTSP协议抓包及讲解

文章目录 前言一、RTSP 亲手搭建直播点播1、数据源为视频文件2、数据源为摄像头①、搭建 RTSP 流媒体服务器②、客户端拉流 二、RTSP 协议简介三、手撕 RTSP 协议1、Wireshark 抓包①、搭建环境②、wireshark 抓包 2、RTSP 交互流程①、OPTIONS②、DESCRIBE③、SETUP④、PLAY⑤…

Acwing 143. 最大异或对

Acwing 143. 最大异或对 题目描述思路讲解代码展示 题目描述 思路讲解 这道题的启示是&#xff1a;字典树不单单可以高效存储和查找字符串集合,还可以存储二进制数字 思路:将每个数以二进制方式存入字典树,找的时候从最高位去找有无该位的异. 代码展示 #include<iostream…

Spring的依赖注入(DI)以及优缺点

Spring的依赖注入&#xff08;DI&#xff09;&#xff1a;解释和优点 依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是Spring框架的核心概念之一&#xff0c;也是现代Java应用程序开发的重要组成部分。本文将深入探讨DI是什么&#xff0c;以及它的…

编程每日一练(多语言实现)基础篇:满足abcd=(ab+cd)^2的数 (增加Go语言实现)

文章目录 一、实例描述二、技术要点三、代码实现3.1 C 语言实现3.2 Python 语言实现3.3 Java 语言实现3.4 JavaScript 语言实现3.5 Go 语言实现 一、实例描述 假设 abcd 是一个四位整数&#xff0c;将它分成两段&#xff0c;即 ab 和 cd&#xff0c;使之相加求和后再平方。求满…

WinHex数据恢复方法(误删后没覆盖)

winhex永远滴神&#xff01;winhex永远滴神&#xff01;winhex永远滴神&#xff01; md&#xff0c;安卓手机插u盘&#xff0c;改个文件夹名竟然把整个文件夹搞没了&#xff01;于是我赶紧查怎么恢复&#xff0c;然后依次找到并试用了diskgenus&#xff08;410RMB&#xff09;、…

Blued引流脚本

于多数人来说&#xff0c;引流都是一个比较困难的操作&#xff0c;因为流量不会听你的。所以任何人在网上做生意&#xff0c;或者开一个实体店&#xff0c;都会为流量而发愁&#xff0c;其实对于流量的吸引来说&#xff0c;我们越是刻意为之&#xff0c;可能所获得的效果也越不…

实现单行/多行文本溢出

在日常开发展示页面&#xff0c;如果一段文本的数量过长&#xff0c;受制于元素宽度的因素&#xff0c;有可能不能完全显示&#xff0c;为了提高用户的使用体验&#xff0c;这个时候就需要我们把溢出的文本显示成省略号。 一. 单行文本溢出 即文本在一行内显示&#xff0c;超出…

网络安全渗透测试工具之skipfish

网络安全渗透测试工具skipfish介绍 在数字化的时代,Web 应用程序安全成为了首要任务。想象一下,您是一位勇敢的安全冒险家,迎接着那些隐藏在 Web 应用程序中的未知风险。而在这个冒险之旅中,您需要一款强大的工具来帮助您发现漏洞,揭示弱点。而这个工具就是 Skipfish。 …

ChatGPT Prompting开发实战(十二)

一、如何开发prompts实现个性化的对话方式 通过设置“system”和“user”等roles&#xff0c;可以实现个性化的对话方式&#xff0c;并且可以结合参数“temperature”的设定来差异化LLM的输出内容。在此基础上&#xff0c;通过构建一个餐馆订餐对话机器人来具体演示对话过程。…

计算机竞赛 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序

文章目录 0 简介1 背景意义2 数据集3 数据探索4 数据增广(数据集补充)5 垃圾图像分类5.1 迁移学习5.1.1 什么是迁移学习&#xff1f;5.1.2 为什么要迁移学习&#xff1f; 5.2 模型选择5.3 训练环境5.3.1 硬件配置5.3.2 软件配置 5.4 训练过程5.5 模型分类效果(PC端) 6 构建垃圾…

国庆作业2

select实现服务器并发 代码&#xff1a; #include <myhead.h>#define ERR_MSG(msg) do{\printf("%d\n",__LINE__);\perror(msg);\ }while(0)#define PORT 8888#define IP "192.168.1.5"int main(int argc, const char *argv[]) {//创建流式套接字…

1.5.C++项目:仿muduo库实现并发服务器之socket模块的设计

项目完整版在&#xff1a; 一、socket模块&#xff1a;套接字模块 二、提供的功能 Socket模块是对套接字操作封装的一个模块&#xff0c;主要实现的socket的各项操作。 socket 模块&#xff1a;套接字的功能 创建套接字 绑定地址信息 开始监听 向服务器发起连接 获取新连接 …

CVE-2023-5129 libwebp堆缓冲区溢出漏洞影响分析

漏洞简述 近日苹果、谷歌、Mozilla和微软等公司积极修复了libwebp组件中的缓冲区溢出漏洞&#xff0c;相关时间线如下&#xff1a; 9月7日&#xff0c;苹果发布紧急更新&#xff0c;修复了此前由多伦多大学公民实验室报告的iMessage 0-click 漏洞&#xff0c;漏洞被认为已经被…

华为云云耀云服务器L实例评测 | 实例场景体验之搭建个人博客:通过华为云云耀云服务器构建个人博客

华为云云耀云服务器L实例评测 &#xff5c; 实例场景体验之搭建个人博客&#xff1a;通过华为云云耀云服务器构建个人博客 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什么华为云云耀…

idea Springboot在线商城系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 在线商城系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有 完整的源代码和数据库&…

关于ElementUI之动态树+数据表格+分页实例

目录 一.ElementUI动态树 二.实例 2.1.数据表 2.2.后端 2.3.前端 三.书籍管理 3.1.数据表 3.2.后端 3.2.前端 好啦今天就分享到这了&#xff0c;希望能帮到你哦&#xff01;&#xff01;&#xff01; 一.ElementUI动态树 ElementUI提供了一个动态树组件&#xff08;Dynami…

vscode左键无法跳转到定义的文件

之前用vscode的时候&#xff0c;明明是可以ctrl键鼠标左键跳转到定义文件的&#xff0c;突然之间就不行了&#xff0c;鼠标移到引入上根本都没有下划线&#xff0c;无法跳转 解决方法&#xff1a; 项目的根目录新建 jsconfig.json 文件&#xff0c;代码如下 {"compiler…

使用SDKMAN在Linux系统上安装JDK

本文使用的Linux发行版为Rocky Linux 9.2&#xff0c;可以当做CentOS的平替产品。 SDKMAN是一个sdk包管理工具&#xff0c;通过自带的命令可以快速切换软件环境&#xff0c; 官网地址&#xff1a;https://sdkman.io/。 1、安装sdkman&#xff1a; # curl -s "https://ge…

去雨去雪去雾数据集构建

在进行去雨去雪去雾算法的学习过程中&#xff0c;需要构建去雨去雪去雾数据集&#xff0c;本文参考Learning Multiple Adverse Weather Removal via Two-stage Knowledge Learning and Multi-contrastive Regularization: Toward a Unified Model论文中的数据集设定&#xff0c…