网站开发虚拟主机系统,北京大型商场一览表,一个ip装两wordpress,天津广告设计公司排名循环高级
1.无限循环
概念#xff1a;
又叫死循环。循环一直停不下来。
for格式#xff1a;
for(;;){System.out.println(循环执行一直在打印内容);
}
解释#xff1a;
初始化语句可以空着不写#xff0c;表示循环之前不定义任何的控制变量。
条件判断…循环高级
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);//[I6d03e736
double[] arr2 {1.1,2.2,3.3};
System.out.println(arr2);//[D568db2f2
打印数组的时候实际出现的是数组的地址值。
数组的地址值就表示数组在内存中的位置。
以[I6d03e736为例
[ 表示现在打印的是一个数组。
I表示现在打印的数组是int类型的。
仅仅是一个间隔符号而已。
6d03e736就是数组在内存中真正的地址值。十六进制的
但是我们习惯性会把[I6d03e736这个整体称之为数组的地址值。
地址值对于我们而言作用不大简单了解。
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.数组的内存图