阅读背景:

HOW2J——JAVA基础——数组

来源:互联网 
import java.util.Arrays;

public class Array {

	public static void main(String[] args) {
		/*题目一:数组最小、大值,反转,排序
		首先创建一个长度是5的数组,然后给数组的每一位赋予随机整数
		获取0-100的 随机整数:(int) (Math.random() * 100)
		1、通过for循环,遍历数组,找出最小值
		2、通过foreach循环,遍历数组,找出最大值
		2、使用for循环或者while循环,对这个数组实现反转效果
		3、首先用选择法正排序,然后再对其使用冒泡法倒排序
		*/
		
		final int LENGTH=5;//数组长度
		int[] a=new int[LENGTH];
		int minValue,maxValue;
		
		//对数组赋予随机整数
		for(int i=0;i<LENGTH;i++)
		{
			a[i]=(int)(Math.random()*100);
		}
		System.out.println(Arrays.toString(a));//打印数组
		
		//求数组最小值:将每个元素与当前最小值比较,如果小于则更改最小值
		minValue=a[0];
		for(int i=1;i<LENGTH;i++)
		{
			if(a[i]<minValue)
				minValue=a[i];
		}
		System.out.println("最小值是:"+minValue);
		
		//求数组最大值
		maxValue=a[0];
		for(int each:a)
		{
			if(each>maxValue)
				maxValue=each;
		}
		System.out.println("最大值是:"+maxValue);
		
		//数组反转:将前一半元素与后一半元素交换位置
		for(int i=0;i<=(LENGTH-1)/2;i++)
		{
			int temp=a[i];
			a[i]=a[LENGTH-1-i];
			a[LENGTH-1-i]=temp;
		}
		System.out.println("反转数组:"+Arrays.toString(a));
		
		//选择法正排序:将每一位与之后所有数据进行比较,将最小的交换到该位置
		for(int i=0;i<LENGTH-1;i++)
		{
			for(int j=i+1;j<LENGTH;j++)
			{
				if(a[j]<a[i])
				{
					int temp=a[i];
					a[i]=a[j];
					a[j]=temp;
				}
			}
		}
		System.out.println("正排序:"+Arrays.toString(a));
		
		//冒泡法倒排序:从第一位开始,和下一位比较,小于则交换,直至最小的数据在最后一位
		//重复该步骤,每次减少比较最后一位
		for(int i=0;i<LENGTH-1;i++)
		{
			for(int j=0;j<LENGTH-1-i;j++)
			{
				if(a[j]<a[j+1])
				{
					int temp=a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
				}
			}
		}
		System.out.println("倒排序:"+Arrays.toString(a));
		
		/*题目二:复制数组
		首先准备两个数组,他俩的长度是5-10之间的随机数,并使用随机数初始化这两个数组
		然后准备第三个数组,第三个数组的长度是前两个的和
		通过System.arraycopy 把前两个数组合并到第三个数组中
		 */
		int length1=(int)(Math.random()*5+5);
		int length2=(int)(Math.random()*5+5);
		int[] src1=new int[length1];//创建第一个数组
		int[] src2=new int[length2];//创建第二个数组
		int[] tar=new int[length1+length2];//创建第三个数组
		
		//用随机数初始化数组
		for(int i=0;i<length1;i++)
			src1[i]=(int)(Math.random()*100);
		for(int i=0;i<length2;i++)
			src2[i]=(int)(Math.random()*100);
		//合并俩数组至tar中
		System.arraycopy(src1, 0, tar, 0, length1);
		System.arraycopy(src2, 0, tar, length1, length2);
		
		//打印数组
		System.out.println("第一个数组:"+Arrays.toString(src1));
		System.out.println("第二个数组:"+Arrays.toString(src2));
		System.out.println("合并后数组:"+Arrays.toString(tar));
		
		/*题目三:二维数组
		定义一个5X5的二维数组。 然后使用随机数填充该二维数组
		找出这个二维数组里,最大的那个值,并打印出其二维坐标
		*/
		int[][] matrix=new int[5][5];
		int maxV,maxI,maxJ;
		
		//初始化数组
		for(int i=0;i<5;i++)
		{
			for(int j=0;j<5;j++)
			{
				matrix[i][j]=(int)(Math.random()*100);
			}
		}
		//打印数组
		for(int i=0;i<5;i++)
			System.out.println(Arrays.toString(matrix[i]));
		//逐个访问元素,找到最大值
		maxV=matrix[0][0];
		maxI=maxJ=0;
		for(int i=0;i<5;i++)
		{
			for(int j=0;j<5;j++)
			{
				if(matrix[i][j]>maxV)
				{
					maxV=matrix[i][j];
					maxI=i;
					maxJ=j;
				}
			}
		}
		System.out.println("最大值是"+maxV);
		System.out.println("坐标为["+maxI+"]["+maxJ+"]");
	}
}import java.util.Arrays;

public class Array {



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: