数组操作的常见问题

数组操作的常见问题
(1)ArrayIndexOutOfBoundsException数组索引越界异常,因为访问了不存在的索引。
(2)NullPointerException空指针异常,因为null是指不再指向堆内存的数据,而程序还要访问它。
空常量null是可以复制给引用数据类型的,表示该引用不再指向堆内存的数据。
(3)代码示例:
int[] arr = {1,2,3};
System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException
arr = null;
System.out.println(arr[0]);//java.lang.NullPointerException

用数据的length属性获取数组元素个数,格式:数组名.length
例子:遍历数组 for(int i = 0; i < arr.length; i++){System.out.println(arr[i]);}
例子:获取数组最值
解题思路:
1.找一个参照物,但是这个参照物只能是该数组中的元素,不能是外部的。
2.拿数组中第一个元素作为参照物。max = arr[0]; min=arr[0];
3.遍历数组,从第二个元素开始,依次与参照物比较,如果元素比max大,那么久留下来做参照物。if(max<arr[i]) max=arr[i]; if(min>arr[i]) min=arr[i];
4.再比较下一个元素。最后输出结果。
例子:不死神兔
有一对兔子,从出生后第三个月起,每个月都生一对兔子,小兔子长到第三个月后,每个月又生一对兔子。假如兔子都不死,问第20个月,兔子对数是多少?
解题思路:
先找规律
规律 对数
第一个月 1
二 1
三 2
四 3
五 5
……
找出的规律为:从第三个月开始,每个月的兔子对数都是前两个月兔子对数相加之和,第一个月和第二个月的兔子对数都是1。
分析:
1.由于数据比较多,所以我们定义数组实现。int[] arr=new int[20];
2.给数据元素赋值。arr[0]=1;arr[1]=1;
3.从第三个月开始,根据规律赋值。for(int i=2;i < length;i++)arr[i]=arr[i-1]+arr[i-2];
数组常用的方法
import java.util.Arrays;
Arrays.sort(arr);//可以对数组从小到大排序,只能对一维数组进行排序。
System.out.println(Arrays.toString(arr));//可以把数组元素拼接成一个好看的字符串,输出:[16, 13, 28, 56]
二维数组
(1)数组是引用数据类型,所以里面可以再放数组,叫做二维数组。
(2)定义:
int[][] arr;//推荐
int arr[][];
(3)初始化
int[][] arr=new int[3][5];//3代表这个二维数组中有3个一维数组,每个一维数组里有5个元素
int[][] arr={{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15}};
(4)遍历二维数组
for(int i=0;i<arr.length;i++){//遍历的是二维数组里所有的一维数组
for(int j=0;j<arr[i].length;j++){//遍历的是一维数组里的每一个元素
System.out.print(arr[i][j]+" ");
}
System.out.println();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值