Java学习 ---- 数组基础总结(2)

1、数组常见错误类型:
(1)IndexOutOfBoundsException ----> 数组下标越界异常。
        遇见这样的异常(错误)时,就表示我们访问数组元素时,小标超出了访问数组的长度-1。
(2)NullPointException ----> 空指针异常
        遇见这样的异常(错误)时,就表示我们访问的数组,被赋值为了null值。

2、使用数组求最值思想:
(1)需求:例如求一组数据中的最大值:12,34,5,146,97,36
(2)解决思路:
        a、需要定义一个数组装下这些数据
        b、需要定义一个临时变量,用于存储最值
(3)编写函数: (明确两个点)
        得到的结果是什么? —> 最大值 整型
        有没有不确定的变量? —> 数组

public static void main(String[] args){
	int[] arr = {12,34,5,146,97,36};
	int max = getMax1(arr);
	System.out.println(max);
	int[] arr = {12,34,5,146,97,36};
	int max = getMax2(arr);
	System.out.println(max);
}
pubilc static int getMax1(int[] arr){
	//得到最大值的第一种方式,将临时变量设定为数组中的任意一个数;
	int maxNum=arr[0];
	for(int i = 0; i < arr.length; i++){
		if(arr[i] > maxNum){
			maxNum = arr[i];
		}
	}
	
	/*
		得到最大值的第二种方式,将临时变量设定为0;
		如果将临时变量设定为0,这个临时变量只能作为一个角标,不能作为一个数值,因为作为了一个数值,假设数组全部都为负数的时候,就会返回0.
	*/
pubilc static int getMax2(int[] arr){
	int maxNum=0;
	for(int i = 0; i < arr.length; i++){
		if(arr[i] > arr[maxNum]){
			maxNum = i;
		}
	}

	return arr[maxNum];
}

3、使用数组的查表法思想:
(1)什么是查表法?
        查表法满足的条件:a、数据之间存在对应关系;b、可以通过其中一方查询到另一方的信息
(2)例子:通过输入数据显示对应的星期

public static void main(String[] args){
	String week = getWeek(2);
	System.out.println(week);
}
/*
	得到的结果是什么?----> 根据对应数字返回星期几
	有没有不确定的参数?  ----->  有,用户输入的数字
*/
public static String getWeek(int num){
	//我们还可以对输入做一下健壮性的判断
	if(num < 1 || num > 7){
		System.out.println("您输入的数字有误,无对应的星期");
	}

	//使用第一种方式返回对应星期,因为用户一般都会输入1-7,而我们的星期一是在数组的第0号位,因此我们在访问的时候需要将数字-1
	//1、定义一个数组,存储对应的星期
	String[] weeks = {“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”,“星期日”};
	//2、返回结果
	return weeks[num-1];
	
	//使用第二种方式返回对应星期,因为用户一般都会输入1-7,因此我们可以在数组的第一位加入一个空字符串,这样就让输入的数字与星期对应起来了。
	//1、定义一个数组,存储对应的星期
	String[] weeks = {“ ”,“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”,“星期日”};
	//2、返回结果
	return weeks[num];
}

4、什么时候使用数组?
在Java中,有很多的容器存在,数组只是其中的一种,那么,我们在存储数据的时候,应该什么时候使用数组呢?
(1)数组的特点:
        a、数据多(超过一个以上就可以用容器存储)
        b、个数确定
        c、有对应的关系 ----> 即数据之间是否存在特征,比如说数据之间是否有有序的编号
(2)在分析需求的时候:
        a、需求中的数据是否有对应的有序编号?
        ----> 如查表法
        b、需求中的数据是否需要有序的编号?
        ----> 如对一组数据进行求和、找最值等操作
如果有以上两点中的其中一点,就使用数组存储

猜你喜欢

转载自blog.csdn.net/qq_41898534/article/details/85140370