Day05-循环高级和数组
循环高级
1.无限循环
概念:
又叫死循环。循环一直停不下来。
for格式:
for(;;){System.out.println("循环执行一直在打印内容"); }
解释:
初始化语句可以空着不写,表示循环之前不定义任何的控制变量。
条件判断语句可以空着不写,如果不写,默认表示true,循环一直进行。
条件控制语句可以空着不写,表示每次循环体执行完毕后,控制变量不做任何变化。
while格式:
while(true){System.out.println("循环执行一直在打印内容"); }
解释:
小括号里面就不能省略了,true一定要写出来,否则代码会报错。
do...while格式:
do{System.out.println("循环执行一直在打印内容"); }while(true);
解释:
小括号里面就不能省略了,true一定要写出来,否则代码会报错。
无限循环的注意事项:
-
最为常用的格式:while
-
无限循环下面不能再写其他代码了,因为永远执行不到。
2.条件控制语句
-
break
-
continue
break:
不能单独存在的。可以用在switch和循环中,表示结束,跳出的意思。
代码示例:
//1.吃1~5号包子 for (int i = 1; i <= 5; i++) {System.out.println("在吃第" + i + "个包子");//2.吃完第三个的时候就不吃了if(i == 3){break;//结束整个循环。} }
continue:
不能单独存在的。只能存在于循环当中。
表示:跳过本次循环,继续执行下次循环。
代码示例:
//1.吃1~5号包子 for (int i = 1; i <= 5; i++) {//2.第3个包子有虫子就跳过,继续吃下面的包子if(i == 3){//跳过本次循环(本次循环中,下面的代码就不执行了),继续执行下次循环。continue;}System.out.println("在吃第" + i + "个包子"); }
3. Random
Random跟Scanner一样,也是Java提前写好的类,我们不需要关心是如何实现的,只要直接使用就可以了。
使用步骤:
-
导包
import java.util.Random; 导包的动作必须出现在类定义的上边。
-
创建对象
Random r = new Random (); 上面这个格式里面,只有r是变量名,可以变,其他的都不允许变。
-
生成随机数
int number = r.nextInt(随机数的范围); 上面这个格式里面,只有number是变量名,可以变,其他的都不允许变。 随机数范围的特点:从0开始,不包含指定值。比如:参数为10,生成的范围[0,10)
代码示例:
//1.导包 import java.util.Random; public class RandomDemo1 {public static void main(String[] args) {//2.创建对象Random r = new Random();//3.生成随机数int number = r.nextInt(100);//包左不包右,包头不包尾//0 ~ 99System.out.println(number); } }
4. 逢七过
需求:
朋友聚会的时候可能会玩一个游戏:逢7过
游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说过:过
使用程序在控制台打印出1-100之间的满足逢七必过规则的数据
举例:
1 2 3 4 5 6 过 8 9 10 11 12 13 过 15 16 过 18 ...
代码示例:
/*朋友聚会的时候可能会玩一个游戏:逢7过游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说过:过需求:使用程序在控制台打印出1-100之间的满足逢七必过规则的数据*/ //分析: //个位7 十位7 7倍数 //1 2 3 4 5 6 过 8 9 10 11 12 13 过 15 16 过 18 19 20 过.... //69 过 过 过 过 过 过... 80 //1.得到1~100之间的每一个数字 //开始:1 //结束:100 for (int i = 1; i <= 100; i++) {//2.判断每一个数字,如果符合规则,就打印过,如果不符合规则就打印真实的数字if(i % 10 == 7 || i / 10 % 10 == 7 || i % 7 == 0){System.out.println("过");continue;}System.out.println(i); }
5. 平方根
需求:
键盘录入一个大于等于2的整数 x ,计算并返回 x 的 平方根 。结果只保留整数部分 ,小数部分将被舍去 。
代码示例:
/*需求:键盘录入一个大于等于2的整数 x ,计算并返回 x 的 平方根 。结果只保留整数部分 ,小数部分将被舍去 。*/ //分析: //平方根 16的平方根4 // 4的平方根2 // 10 // 1 * 1 = 1 < 10 // 2 * 2 = 4 < 10 // 3 * 3 = 9 < 10 // 4 * 4 = 16 > 10 //推断:10的平方根是在3~4之间。 // 20 // 1 * 1 = 1 < 20 // 2 * 2 = 4 < 20 // 3 * 3 = 9 < 20 // 4 * 4 = 16 < 20 // 5 * 5 = 25 > 20 //推断:20的平方根是在4~5之间。 //在代码当中 //从1开始循环,拿着数字的平方跟原来的数字进行比较 //如果小于的,那么继续往后判断 //如果相等,那么当前数字就是平方根 //如果大于的,那么前一个数字就是平方跟的整数部分 //1.键盘录入一个整数 Scanner sc = new Scanner(System.in); System.out.println("请输入一个整数"); int number = sc.nextInt(); //2.从1开始循环判断 //开始:1 结束: number for (int i = 1; i <= number; i++) {//用i * i 再跟number进行比较if(i * i == number){System.out.println(i + "就是" + number + "的平方根");//一旦找到了,循环就可以停止了,后面的数字就不需要再找了,提高代码的运行效率。break;}else if(i * i > number){System.out.println((i - 1) + "就是" + number + "平方根的整数部分");break;} }
6.判断是否为质数
需求:
键盘录入一个正整数 x ,判断该整数是否为一个质数。
代码示例:
//需求:键盘录入一个正整数 x ,判断该整数是否为一个质数。 //质数: //如果一个整数只能被1和本身整除,那么这个数就是质数。否则这个数叫做合数 //7 = 1 * 7 质数 //8 = 1 * 8 2 * 4 合数 //分析: //1.键盘录入一个正整数 //number Scanner sc = new Scanner(System.in); System.out.println("请输入一个正整数"); int number = sc.nextInt();//9 //定义一个变量,表示标记 //标记着number是否为一个质数 //true: 是一个质数 //false : 不是一个质数 //表示最初就认为number是一个质数 boolean flag = true; //2.判断 //写一个循环,从2开始判断,一直判断到number-1为止 //看这个范围之内,有没有数字可以被number整除 for (int i = 2; i < number; i++) {//i 依次表示这个范围之内的每一个数字//看number是否能被i整除就可以了if(number % i == 0){// 9 % 2 = 1flag = false;//System.out.println(number + "不是一个质数");break;}/*else{System.out.println(number + "是一个质数");}*/ } //只有当这个循环结束了,表示这个范围之内所有的数字都判断完毕了 //此时才能断定number是一个质数 if(flag){System.out.println(number + "是一个质数"); }else{System.out.println(number + "不是一个质数"); }
7. 猜数字小游戏
需求:
程序自动生成一个1-100之间的随机数,在代码中使用键盘录入去猜出这个数字是多少?
要求:
使用循环猜,一直猜中为止。
思路分析:
-
生成一个1-100之间的随机数
-
使用键盘录入去猜出这个数字是多少
-
把反复猜的代码写在循环中
代码示例:
//1.生成一个1-100之间的随机数 Random r = new Random(); int number = r.nextInt(100) + 1;// 0 ~ 99 + 1 --- 1 ~ 100 System.out.println(number); //2.使用键盘录入去猜出这个数字是多少? Scanner sc = new Scanner(System.in); while(true){System.out.println("请输入一个整数");int guessNumber = sc.nextInt();//3.比较if(guessNumber > number){System.out.println("您猜的数字大了");}else if(guessNumber < number){System.out.println("您猜的数字小了");}else{System.out.println("恭喜你,猜中了");break;} }
数组
1.数组
概念:
指的是一种容器,可以同来存储同种数据类型的多个值。
但是数组容器在存储数据的时候,需要结合隐式转换考虑。
比如:
定义了一个int类型的数组。那么boolean。double类型的数据是不能存到这个数组中的,
但是byte类型,short类型,int类型的数据是可以存到这个数组里面的。
建议:
容器的类,和存储的数据类型保持一致。
举例:
整数1 2 3 4 56 就可以使用int类型的数组来存储。
小数1.1 1.2 1.3 1.4 就可以使用double类型的数组来存储。
字符串"aaa" "bbb" "ccc" 就可以使用String类型的数组来存储。
2.数组的定义
格式一:
数据类型 [] 数组名
比如:int [] array
格式二:
数据类型 数组名 []
比如: int array []
详解:
数据类型:限定了数组以后能存什么类型的数据。
方括号:表示现在定义的是一个数组。
数组名:就是一个名字而已,方便以后使用。
注意点:
方法括号跟数组名,谁写在前面,谁写在后面都是一样的。
平时习惯性使用第一种方式。
3.数组的静态初始化
完整格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,元素4...};
比如:
int[] arr = new int[]{11,22,33};
double[] arr = new double[]{1.1,1.2,1.3};
格式详解:
数据类型:限定了数组以后能存什么类型的数据。
方括号:表示现在定义的是一个数组。
数组名:其实就是名字而已,方便以后使用,在起名字的时候遵循小驼峰命名法。
arr namesArr
new:就是给数组在内存中开辟了一个空间。
数据类型:限定了数组以后能存什么类型的数据。
前面和后面的数据类型一定要保持一致。
int[] arr = new double[]{11,22,33};//错误写法
方括号:表示现在定义的是一个数组。
大括号:表示数组里面的元素。元素也就是存入到数组中的数据。
多个元素之间,一定要用逗号隔开。
注意点:
-
等号前后的数据类型必须保持一致。
-
数组一旦创建之后,长度不能发生变化。
简化格式:
数据类型[] 数组名 = {元素1,元素2,元素3,元素4...};
比如:
int[] array = {1,2,3,4,5};
double[] array = {1.1,1.2,1.3};
练习1:
定义数组存储5个学生的年龄。
1.给数组限定什么类型? int 2.利用静态初始化完成创建并添加元素 int[] agesArr = new int[]{18,19,20,21,22}; int[] agesArr = {18,19,20,21,22};
练习2:
定义数组存储3个学生的姓名。
1.给数组限定什么类型? String 2.利用静态初始化完成创建并添加元素 String[] namesArr = new String[]{"zhangsan","lisi","wangwu"}; String[] namesArr = {"zhangsan","lisi","wangwu"};
练习3:
定义数组存储4个学生的身高。
1.给数组限定什么类型? double 2.利用静态初始化完成创建并添加元素 double[] heightsArr = new double[]{1.85,1.82,1.78,1.65}; double[] heightsArr = {1.85,1.82,1.78,1.65};
4.地址值
int[] arr = {1,2,3,4,5}; System.out.println(arr);//[I@6d03e736 double[] arr2 = {1.1,2.2,3.3}; System.out.println(arr2);//[D@568db2f2
打印数组的时候,实际出现的是数组的地址值。
数组的地址值:就表示数组在内存中的位置。
以[I@6d03e736为例:
[ :表示现在打印的是一个数组。
I:表示现在打印的数组是int类型的。
@:仅仅是一个间隔符号而已。
6d03e736:就是数组在内存中真正的地址值。(十六进制的)
但是,我们习惯性会把[I@6d03e736这个整体称之为数组的地址值。
地址值对于我们而言,作用不大,简单了解。
5.数组元素访问
格式:
数组名[索引];
作用:
-
获取数组中对应索引上的值
-
修改数组中对应索引上的值
一旦修改之后,原来的值就会被覆盖了。
代码示例:
public class ArrDemo2 {/* 数组中元素访问的格式:数组名[索引]; 作用:1.获取指定索引上对应的元素2.修改指定索引上对应的元素 */public static void main(String[] args) {int[] arr = {1,2,3,4,5};//需求1:获取arr数组中,3索引上的值int number = arr[3];System.out.println(number);System.out.println(arr[3]); //需求2:将arr数组中,3索引上的值修改为10arr[3] = 10;System.out.println("修改之后为:" + arr[3]); } }
6.索引
也叫角标、下标
就是数组容器中每一个小格子对应的编号。
索引的特点:
-
索引一定是从0开始的。
-
连续不间断。
-
逐个+1增长。
7.数组的遍历
遍历:就是把数组里面所有的内容一个一个全部取出来。
数组的长度:数组名.length;
通用代码:
for(int i = 0; i < arr.length; i++){//在循环的过程中,i依次表示数组中的每一个索引sout(arr[i]);//就可以把数组里面的每一个元素都获取出来,并打印在控制台上了。 }
8.数组的动态初始化
格式:
数据类型[] 数组名 = new 数据类型[数组的长度];
举例:
//1.定义一个数组,存3个人的年龄,年龄未知 int[] agesArr = new int[3]; //2.定义一个数组,存班级10名学生的考试成绩,考试成绩暂时未知,考完才知道。 int[] scoresArr = new int[10];
数组的默认初始化值:
整数类型:0
小数类型:0.0
布尔类型:false
字符类型:'\u0000' 空格
引用类型:null
9.数组两种初始化方式的区别
静态初始化:int[] arr = {1,2,3,4,5};
动态初始化:int[] arr = new int[3];
静态初始化:手动指定数组的元素,系统会根据元素的个数,计算出数组的长度。
动态初始化:手动指定数组长度,由系统给出默认初始化值。
使用场景:
只明确元素个数,但是不明确具体的数据,推荐使用动态初始化。
已经明确了要操作的所有数据,推荐使用静态初始化。
举例:
-
使用数组来存储键盘录入的5个整数。
int[] arr = new int[5];
-
将全班的学生成绩存入数组中,已知学生成绩为:66,77,88,99,100
int[] arr = new int[5];
arr[0] = 66;
arr[1] = 77;
虽然可以实现,但是太麻烦了。
建议使用静态初始化:int[] arr = {66,77,88,99,100};
10.数组常见问题
当访问了数组中不存在的索引,就会引发索引越界异常。
避免:
针对于任意一个数组,索引的范围: 最小索引:0 最大索引:数组的长度 - 1即 数组名.length - 1
11.数组的内存图
相关文章:

Day05-循环高级和数组
循环高级 1.无限循环 概念: 又叫死循环。循环一直停不下来。 for格式: for(;;){System.out.println("循环执行一直在打印内容"); } 解释: 初始化语句可以空着不写,表示循环之前不定义任何的控制变量。 条件判断…...
从代码操作层面解释什么是“面相对象编程”?
起因: 今天开了一个小会,会上朋友给我们说了一个事,Java项目上他开发一个小功能 用了很多代码,项目经理发现代码太多,说要优化一下,然后亲自帮同事优化,结果是查库的代码少了至少10条sql&#x…...
【MySQL】SQL优化、char、varchar、外键约束、排查慢sql等重点知识汇总
目录 SQL语句 char和varchar比较 SQL语句如何优化 说一下你理解的外键约束 如何排查慢 sql SQL语句 对库操作 创建数据库 create database 数据库名 删除数据库 drop database 数据库名 显示所有数据库 show databases 选中数据库 use 数据库名 对表操作 创建表…...
git管理常用命令
1、下载代码 git clone 地址2、软件代码提交 1、查看工程中被修改的文件:git status 2.将不需要提交的文件回退:git check <文件路径> 3.更新工程到最新:git pull 4.将本地代码添加到暂存区:git add <将要提交的文件路…...

Python 逢七拍手小游戏2.0
"""逢七拍手游戏介绍:逢七拍手游戏的规则是:从1开始顺序数数,数到有7,或者是7的倍数时,就拍一手。例如:7、14、17......70......知识点:1、循环语句for2、嵌套条件语句if/elif/e…...

基于微信小程序的在线小说阅读系统,附数据库、教程
1 功能简介 Java基于微信小程序的在线小说阅读系统 微信小程序的在线小说阅读系统,系统的整体功能需求分为两部分,第一部分主要是后台的功能,后台功能主要有小说信息管理、注册用户管理、系统系统等功能。微信小程序主要分为首页、分类和我的…...
216. 组合总和 III
找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输出: [[1,2,4]] 解释: …...
【Java】数组的深浅拷贝问题(二维数组举例)(136)
深拷贝和浅拷贝: 对于数组来说,深拷贝就是相当于拷贝了数组的对象(基本数据类型),也就是数组当中的内容。而浅拷贝就是拷贝的是数组的地址(引用类型),浅拷贝只是复制了对象的引用地…...

【轮趣-科大讯飞】M260C 环形六麦测试 2 - ROS1功能测试与唤醒、语音识别程序解析
所有内容请看: 博客学习目录_Howe_xixi的博客-CSDN博客https://blog.csdn.net/weixin_44362628/article/details/126020573?spm1001.2014.3001.5502原文在飞书,请联系我获取阅读链接,我太懒了...

油猴(篡改猴)学习记录
第一个Hello World 注意点:默认只匹配了http网站,如果需要https网站,需要自己添加match https://*/*代码如下 这样子访问任意网站就可以输出Hello World // UserScript // name 第一个脚本 // namespace http://tampermonkey.net/ // version 0.1 // descri…...
LeetCode 面试题 05.08. 绘制直线
文章目录 一、题目二、Java 题解 一、题目 已知一个由像素点组成的单色屏幕,每行均有 w 个像素点,所有像素点初始为 0,左上角位置为 (0,0)。 现将每行的像素点按照「每 32 个像素点」为一组存放在一个 int 中,再依次存入长度为 le…...

机器人中的数值优化|【六】线性共轭梯度法,牛顿共轭梯度法
机器人中的数值优化|【六】线性共轭梯度法,牛顿共轭梯度法 往期回顾 机器人中的数值优化|【一】数值优化基础 机器人中的数值优化|【二】最速下降法,可行牛顿法的python实现,以Rosenbrock function为例 机器人中的数值优化|【三】无约束优化…...

FastestDet---原理介绍
1.测试指标 2.算法定位 FastestDet是设计用来接替yolo-fastest系列算法,相比于业界已有的轻量级目标检测算法如yolov5n, yolox-nano, nanoDet, pp-yolo-tiny, FastestDet和这些算法根本不是一个量级,FastestDet无论在速度还是参数量上,都是要小好几个数量级的,但是精度自然…...

ORACLE 在内存管理机制上的演变和进化
截止目前,计算机内存仍然被认为是我们可以获得的最快速度的物理存储设备。 将频繁访问的数据尽可能地置于内存中,已成为当前各种软件和应用程序提高数据访问性能,减少访问延迟的最为有效的途径。 然而,内存作为关键的计算资源&am…...

Linux ❀ 进程出现process information unavailable时的消除方法
[rootmaster ~]# jps 74963 -- process information unavailable 78678 Jps [rootmaster ~]# cd /tmp/hsperfdata_redhat/ # redhat为启动该java进程的用户ps -ef | grep $pid查找 [rootmaster hsperfdata_redhat]# ll total 32 -rw------- 1 redhat redhat 32768 Sep 27 15:…...

ps智能填充功能平替:alpaca的安装和使用
为了解决ps beta 智能填充无法使用的问题,需要用alpaca来平替,下面是安装教程: 安装方法: 1、下载插件。 alpaca插件汉化-夸克网盘https://pan.quark.cn/s/1168b447a44e#/list/share 2、 根据使用的PS版本,选择对应文件…...
【前端打怪升级日志之ES6篇】玩转函数
学习资料 阮一峰老师《ECMAScript 6 入门》— 函数的扩展 总结应用 1. 函数参数默认值与对象解构赋值默认值的结合使用 // 场景:方法调用时传参希望只传第二个参数 // 方案1: function foo({x1,y2}){console.log(x,y); } foo({}) //1 2 foo({x:2}) /…...

网址静态码手机制作教程,附图文详解!
网址的静态码是如何生成的呢?静态码是二维码的一种常用类型,一般常见的静态码类型主要是文本或者网址,那么在电脑制作静态码的方法相信很多小伙伴都知道怎么做,那么手机上制作的方法,大家感兴趣吗?下面来给…...

服务器性能测试监控平台export+prometheus(普罗米修斯)+grafana搭建
1. export 数据采集工具 简介: export是prometheus是的数据采集组件的总称,它可以将采集到的数据转为prometheus支持的格式 node_export: 用来监控服务器硬件资源的采集器,端口号为9100mysql_export: 用来监控mysql数据库资源的采集器&…...
【24种设计模式】责任链模式
责任链模式是一种行为设计模式,它允许你将请求沿着处理链进行传递,直到有一个处理者能够处理该请求为止。这种模式将请求的发送者和接收者解耦,使多个对象都有机会处理该请求。 责任链模式的结构 责任链模式由以下几个角色组成:…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
Android屏幕刷新率与FPS(Frames Per Second) 120hz
Android屏幕刷新率与FPS(Frames Per Second) 120hz 屏幕刷新率是屏幕每秒钟刷新显示内容的次数,单位是赫兹(Hz)。 60Hz 屏幕:每秒刷新 60 次,每次刷新间隔约 16.67ms 90Hz 屏幕:每秒刷新 90 次,…...
算法250609 高精度
加法 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; char input1[205]; char input2[205]; int main(){while(scanf("%s%s",input1,input2)!EOF){int a[205]…...
当下AI智能硬件方案浅谈
背景: 现在大模型出来以后,打破了常规的机械式的对话,人机对话变得更聪明一点。 对话用到的技术主要是实时音视频,简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术,开发自己的大模型。商用方案多见为字节、百…...
软件工程教学评价
王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中,您通过丰富的实例,将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻,让这些理论不再是停留在纸面的名词,而是可以指导…...