java知识day07(数组异常;数组应用;二维数组;形式参数问题)

数组异常

1)数组角标越界异常:

ArrayIndexOutOfBoundsException

2)空指针异常:

NullPointerException (在内存中,可能对象为null了,使用对象调用它的功能)

数组应用

求最值问题:最大值,最小值
class ArrayTest{
	public static void main(String[] args){
		//定义一个是数组,静态初始化
		int[] arr = {26,89,13,65,19} ;		// 需求:13这个元素第一次出现的索引值
		
		//使用方法改进
		//调用求最大值的方法
		int max = getMax(arr) ;
		System.out.println("数组中的最大值是:"+max);
		System.out.println("---------------------");
		
		int min = getMin(arr) ;
		System.out.println("数组中的最小值是:"+min);
	}
	
	
	//定义最小值的方法
	public static int getMin(int[] arr){
		//参照物
		int min = arr[0] ;
		for(int x = 1 ; x < arr.length ; x++){
			if(arr[x] < min){
				min = arr[x] ;
			}
		}
		
		return min ;
	}
	
	/*
		定义方法:
			两个明确:
				1)明确返回值类型:int类型
				2)明确参数个数以及参数类型 ,1个参数,数组
	*/
	public static int getMax(int[] arr){
		//定义参照物
		int max = arr[0] ;
		for(int x = 1; x < arr.length ; x ++){
			if(arr[x] > max){
				max = arr[x] ;
			}
		}
		
		return max ;
	}
}
数组的元素逆序
class ArrayTest2{
	public static void main(String[] args){
		
		//定义一个数组,静态初始化
		int[] arr = {11,87,56,50,24};
		
		System.out.println("交换前:") ;
		//遍历数组
		printArray(arr) ;
		
		System.out.println("交换后:") ;
		//逆序
		reverse(arr) ;
		printArray(arr) ;
		
		System.out.println("-------------------------") ;
		System.out.println("交换后:") ;
		//逆序
		reverse2(arr) ;
		printArray(arr) ;
	}
	
	//方式2
	public static void reverse2(int[] arr){
		for(int start=0,end = arr.length-1; start<=end; start++,end--){
			//定义中间变量
			int temp = arr[start] ;
			arr[start] = arr[end] ;
			arr[end] = temp ;
		}
	}
	
	//将逆序封装成功能
	//reverse:反转
	public static void reverse(int[] arr){
		for(int x = 0 ; x < arr.length/2; x ++){
			int temp = arr[x] ;
			arr[x] = arr[arr.length-1-x] ;
			arr[arr.length-1-x] = temp ;
		}
	}
	
	//遍历数组
	public static void printArray(int[] arr){
		System.out.print("[");
		for(int x = 0 ; x < arr.length; x ++){
			if(x== arr.length-1){
				System.out.println(arr[x]+"]") ;
			}else{
				System.out.print(arr[x]+", ") ;
			}
		}
	}
}
数组元素查表法(通过数组对象[角标值],查找元素)
import java.util.Scanner;
class ArrayTest3{
	public static void main(String[] args){
		//定义字符串数组
		String[] strArray  = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"} ;
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//接收
		System.out.println("请输入一个数据(0-6):");
		int index = sc.nextInt() ;
		//输出
		System.out.println("查找的是:"+strArray[index]) ;
		
	}
}

二维数组

定义格式:

数据类型[][] 数组名称 = new 数据类型[m][n] ;动态初始化
m:当前二维数组中有几个一维数组,
n:一维数组中的元素个数

二维数组遍历
class ErBianLi{
	public static void main(String [] csa){
		int[][] arr={{1,2,3},{4,5,6},{7,8,9}};
		printArray(arr) ;
		System.out.println() ;
	}
	public static void printArray(int[][] arr){
		for(int x = 0 ; x  < arr.length ; x ++){
			for(int y = 0 ; y < arr[x].length ; y++){
				System.out.print(arr[x][y]+" ") ;
			}
		}
	}
}

形式参数问题

方法的形式参数如果是一个基本数据类型,形式参数的改变对实际参数没有影响! (具体的数据值)
方法的形式参数如果是引用数据类型,形式参数的改变会直接影响实际参数!(空间地址值)
class ArgsDemo{
	public static void main(String[] args){
		//定义两个变量
		int a = 10 ;
		int b = 20 ;
		System.out.println("a:"+a) ;//10
		System.out.println("b:"+b) ;//20
		//调用了一个方法
		change(a,b) ;
		System.out.println("a:"+a) ;//10
		System.out.println("b:"+b) ;//20
		//定义一个数组
		int[] arr = {1,2,3,4,5} ;
		change(arr) ;
		System.out.println(arr[1]) ; //4
	}
	public static void change(int a,int b){
		System.out.println("a:"+a) ;
		System.out.println("b:"+b) ;	
		a = b ;
		b = a+ b;
	}
	public static void change(int[] arr){//形式参数是引用类型,形参的改变直接影响实际参数
		//遍历数组
		for(int x = 0 ; x < arr.length ; x ++){
			if(arr[x] %2 ==0 ){
				arr[x]*=2 ;
			}
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值