数组的遍历
- 定义一个数组,求和
int[] arr = {1,2,3,4,5,6,7};
int sum = 0;
for (int i = 0; i <arr.length ; i++) {
sum = sum +arr[i];
}
System.out.println(sum);
- 定义一个数组,统计数组里面一共有多少能够被3 整除的数字:
int[] arr1 = {4,62,85,36,97,53,68,17,84,82,94,15,58,52,57,21,73,91,25,57,39,75};
int count = 0;
for (int i = 0; i < arr1.length; i++) {
if (arr1[i]%3==0){
count++;
}
}
System.out.println("共有"+count+"个数字能够被3整除");
}
- 定义一整数类型数组,如果该数字是奇数,则将当前数字扩大两倍,如果是偶数,则将该数字变成该数字的1/2.
一个循环尽量只做一件事情,虽然把打印写的同一个循环里面可以,结果一样,但是不建议。
int[] arr3 = {21,46,42,56,24,556,83,72,41,63,58,24};
for (int i = 0; i < arr3.length; i++) {
if (arr3[i]%2==1) {
arr3[i] = arr3[i]*2;
}else
arr3[i] = arr3[i]/2;
}
//一个循环尽量只做一件事情,虽然把打印写的同一个循环里面可以,结果一样,但是不建议。
for (int i = 0; i < arr3.length; i++) {
System.out.println(arr3[i]);
}
数组的动态初始化和常见的问题
静态:已经知道数组的具体数据(可以写死) :int[] arr= {1,2,4}
动态:不知道数组里面的具体数值 int[] arr={?,?,?}
动态初始化:初始化的时候,只指定数组的长度,有系统为数组分配初始值
格式:数据类型 [] 数组名 = new 数据类型[数组长度]
int[] arr = new int[100];
- 定义一个数组,用来存储班级中五十个学生的姓名,姓名未知,带学生报道后,在进行添加
String[] arr4 = new String[50];
arr4[0] = "da";
arr4[1] = "ff";
arr4[2] = "dafew";
arr4[3] = "dwfwea";
arr4[4] = "dafwe";
arr4[5] = "dwefwa";
System.out.println(arr4[0]);
System.out.println(arr4[1]);
System.out.println(arr4[2]);
System.out.println(arr4[3]);
System.out.println(arr4[4]);
System.out.println(arr4[5]);
System.out.println(arr4[6]);
字符串的数组 初始值默认为NULL,int 类型的默认初始值为0;
int[] x= new int[3];
x[0] = 1;
System.out.println(x[0]);
System.out.println(x[1]);
System.out.println(x[2]);
初始化规律:
数组默认初始化值:
整数类型:默认初始化值0
小数类型:默认初始化值0.0
字符类型:默认初始化值为’/u0000’ 空格
布尔类型:默认初始化值为 false
引用数据类型:默认初始化值为null;
静态初始化和动态初始化的区别
动态:手动指定数组长度,由系统给出默认初始化值。
静态:手动指定数组元素,系统会根据元素的个数,计算出数组的长度。
- 举例:
用数组容器来存储键盘录入五个整数,应使用动态数组 int[] arr={?,?,?}
数组常见的问题
.ArrayIndexOutOfBoundsException:数组索引超出范围异常(索引越界异常)
原因:访问了不存在的索引
数组常见的操作
- 求最值
已知数组元素为{2,3,5,1,7,4}
请找出数组中最大值 并打印在控制台:
int[] arr6 = {2,3,5,1,7,4};
int max =arr6[0]; //临时认为0索引最大
for (int i = 0; i < arr6.length; i++) {//循环第一次是自己和自己比较,可以跳过此循环,从i=1开始进行循环
if (arr6[i]>=max){
max = arr6[i];
}
}
System.out.println(max);
max的初始值不能随便写成0,如果数组中的值都是负数,此时max等于0 ,大于数组中的任意值,所以一般临时默认为索引0的值是最大的。
- 求和并统计个数
生成10个0~100之间的随机数,
(1)求出所有数据的和,
(2)求出所有数据的平均数,
(3)统计有多少个数小于平均值
int[] arr= new int[10];
Random r = new Random();
//生成数组,一个循环只干一件事
for (int i = 0; i < arr.length; i++) {
int number = r.nextInt(100);
arr[i] = number;
}
//所有数据的和
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum = sum +arr[i];
System.out.print(arr[i]+" ");
}
System.out.println("数组中所有的数字和是"+sum);
//求所有的平均数
double avg = sum/10.0;
System.out.println("平均数是"+avg);
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i]<avg){
count++;
}
}
System.out.println("比平均数小的个数总共有"+count+"个");
输出结果:
- 交换数组中的数据
本人方法:
int[] arr = {1,2,3,4,5,6,7,8};
//不能小于arr.length,否则循环到数组长度的1/2之后,交换好的数据又会被交换回去。
for (int i = 0; i < arr.length/2; i++) {
int j= arr.length-1-i;
int temp;
temp = arr[i];
arr[i] =arr[j];
arr[j] =temp;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
b站up主方法:
int[] arr = {1,2,3,4,5,6,7,8};
for (int i = 0,j = arr.length-1; i < j;i++,j--) {
int temp;
temp = arr[i];
arr[i] =arr[j];
arr[j] =temp;
}
for (int i : arr) {
System.out.print(i);
}