目录

数组拷贝:

数组反转:

数组扩容:

代码实现:

代码效果:

数组排序与查找:

二维数组的应用:

杨辉三角:

代码实现:

代码效果:

有点意思的习题:

习题1:

习题2:

代码实现:

代码效果:

 习题3:

代码实现:

代码效果:


数组拷贝:

我们定义一个含有{4 , 5 , 6}的数组arr,我们同时定义一个数组arr2,新数组长度= arr.length,我们使用for循环遍历arr使其拷贝到arr2中

数组反转:

同样定义一个数组arr,用len记录数组的长度:arr.length,无论数组中元素的个数是奇数还是偶数,我们让len/2,得到数组一半的长度,这时定义两个变量i和j,i下标从0开始,j下标从len-1开始,同时引入中间变量temp便于数组首位元素的交换。

详情可看我之前写的一篇数组的逆序博客!

简述java实现数组的逆序_爱德苏的博客

数组扩容:

我们定义一个arr数组{ 1,2,3,4,5};下标0-4,数组长度为5,然后我们定义一个新的数组arr2,长度为arr.length +1,然后将arr数组的元素拷贝给arr2,并直接对arr2[arr2.lenget-1]赋值为我们要添加的元素。然后让arr指向arr2,arr=arr2,arr旧的数组被销毁。我们使用do- -while加判断语句来实现让用户自主选择是否扩容。

代码实现:

import java.util.Scanner;//引入包,用户才能使用输出功能
public class Day03{
	public static void main (String[] args){
		Scanner myScanner = new Scanner(System.in);
		int arr[] = {1,2,3,4,5};
		//使用一个变量保存用户扩容的数组内容
		do{
			int arr2[] = new int [arr.length + 1];
			System.out.println("请输入你要添加的元素");
			int addNum = myScanner.nextInt();
			for(int i = 0 ; i < arr.length ; i++ ){
				arr2[i]=arr[i];
			}//是旧数组里的数组元素遍历到新数组中
			arr2[arr2.length-1] = addNum;
			arr=arr2;
			System.out.println("===扩容后的数组===");
			for(int i=0;i<arr.length;i++){
				System.out.print(arr[i]+"\t");
			}
				System.out.println("是否继续添加: y/n");
			char  key = myScanner.next().charAt(0);	
			if( key == 'n'){
	 			System.out.println("-.-");
				break;
			}	
		 }while(true);
	}
}

代码效果:

java stream二维数组求和 java二维数组运算_java

 

数组排序与查找:

简述java实现冒泡排序和顺序查找_爱德苏的博客

二维数组的应用:

杨辉三角:

我们打印一个10行的杨辉三角

java stream二维数组求和 java二维数组运算_数组_02

规律: 我们可以看出该三角型由多个一维数组组成,且一维数组第一个和最后一个元素都=1
       其他元素符和规律:a[i][j]=a[i-1][j]+a[i-1][j-1];

代码实现:

//import java.util.Scanner;//引入包,用户才能使用输出功能
public class YangHui{
	public static void main (String[] args){
		//1
		//1 1
		//1 2 1
		//1 3 3  1
		//1 4 6  4  1
		//1 5 10 10 1
		//我们可以看出该三角型由多个一维数组组成,且一维数组第一个和最后一个元素都=1
		//其他元素符号规律:a[i][j]=a[i-1][j]+a[i-1][j-1];
		int arr[][] = new int [10][];//定义一个有10行的二维数组,一维数组具体大小不确定
		for(int i = 0 ; i < arr.length ;i++ ){//遍历二维数组里的一维数组,arr.length(多少行)
			arr[i] = new int [i+1];//给每一行的一维数组开空间
			for(int j = 0 ; j <arr[i].length ; j++){
				
				if(j==0 || j==i){//特殊条件,都赋值为1
					arr[i][j]=1;
				}
				else{
					arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
				}
			}

		}
		//打印杨辉三角
		for(int i = 0 ; i < arr.length ; i++){
			for(int j = 0 ; j < arr[i].length ; j++){
				System.out.print(arr[i][j]+"\t");
			}
			System.out.println();//换行
		}
		
	}
}

代码效果:

java stream二维数组求和 java二维数组运算_java stream二维数组求和_03

有点意思的习题:

习题1:

int [ ] x, y [ ] ;如果代码写成这个样子,则数组x表示一维数组,而数组y表示二维数组。

习题2:

已知有一个升序的数组{1,3,5,7,9 };要求插入元素后,依旧能够升序输出,例如插入 6,则输出数组为 { 1,3,5,6,7,9};或者插入 -1,输出为{ -1,1,3,5,6,7,9}

代码实现:

//import java.util.Scanner;//引入包,用户才能使用输出功能
public class HomeWork01{
	public static void main (String[] args){
		int arr[]={1,3,5,7,9};
		int addNum = -1;//addNum<=arr[i]
		int index= -1;//用于判断是否在数组中找到增加数的位置
		for(int i = 0 ; i < arr.length ;i++){
			if(addNum <= arr[i]){
				index=i;
				break;//找到一个就跳出循环。
			}
		}//判断addNum的位置
		if(index== -1){//增加数最大,位于数组的最后位置。
			index = arr.length;
		}
		//扩容数组
		//将原来数组拷贝到新数组
		//而且新数组的index位置不能被拷贝
		int arr2[] = new int[arr.length + 1];
		for(int i=0 ,j = 0 ; i < arr2.length ; i++){//i指向新数组,j指向原来的数组
			if(index != i){
				arr2[i] = arr[j];
				j++;//j不一定跟i同加
			}else{
				arr2[i] = addNum;
			}
		}
		arr = arr2;//将arr2赋给新数组,老的数组当垃圾
		System.out.println("===插入后的新数组情况===");
		for(int i= 0; i< arr.length ; i++){
			System.out.print(arr[i]+"\t");

		}

	}
}

代码效果:

java stream二维数组求和 java二维数组运算_java_04

 习题3:

随机生成10个0-100的整数保存到数组中,并倒序打印而且输出其平均值,求最大值和最大的下标,然后并判断随机10个数中是否有8,做出回馈。

//生成一个1-100的的随机整数(注意:Math一定要大写!)
//(int)(Math.random()*100 + 1)

代码实现:

//import java.util.Scanner;//引入包,用户才能使用输出功能
public class HomeWork03{
	public static void main (String[] args){
		//生成一个1-100的的随机整数
		//(int)(Math.random()*100 + 1)
		int arr[] = new int[10];
		int sum = 0;//求和便于计算平均值
		int len = arr.length;//保存数组长度
		int temp = arr[0];//中间变量
		int max = arr[0];//保存最大值
		int maxPose = 0;//保存最大值下标 
		int index = -1;
		System.out.print("产生十个1-100的随机数: ");
		for(int i= 0 ; i < len ; i++){
			arr[i] = (int)(Math.random()*100 + 1);
			System.out.print(arr[i] + "\t");
			if(arr[i]>max){
				max = arr[i];
				maxPose = i;
			}
			if(arr[i]==8){
				index = i;
				System.out.println("\n存在元素8");
			}
		}
		System.out.println("\n该数组中最大值" + max);
		System.out.println("\n该数组中最大的下标元素=" + maxPose);
		if(index==-1){
			System.out.println("\n该数组中没有8这个元素");
		}
		//保存十个1-100的整数到arr数组中
		//倒序输出,求平均值,求最大值和最大值的下标,并查找是否有8
		for(int i = 0,j = len-1 ; i < len/2 ; i++,j--){
			temp=arr[i];
			arr[i]=arr[j];
			arr[j]=temp;
		}//逆序数组
		//倒序输出
		System.out.print("\n打印倒序");
		for(int i= 0 ; i < len ; i++){
			System.out.print(arr[i] + "\t");
		}
		//
		
	}
}

代码效果:

java stream二维数组求和 java二维数组运算_java stream二维数组求和_05

运气很不好啊!没有出来8。