8、Java——一维数组案例代码详解

知识快搜

JAVA入门——一维数组

案例一

        排序:对10个整数进行按照从小到大的顺序排序

        思路分析:用冒泡排序的方法进行排序

        代码展示:

	public static void main(String[] args) {

		//对10个整数进行按照从小到大的顺序排序
		
		// 定义10个整数的数组
		int[] nums={42,35,64,78,39,26,89,21,97,17};
		
		for (int i = 0; i < nums.length-1; i++) {
			for (int j = 0; j < nums.length-1-i; j++) {
				if(nums[j]>nums[j+1]){
					int temp=nums[j];
					nums[j]=nums[j+1];
					nums[j+1]=temp;
				}
			}
		}
		System.out.println("按照从小到大的顺序排序:");
		System.out.print("int[] nums={");
		for (int i = 0; i < nums.length; i++) {
			if(i==nums.length-1){
				System.out.print(nums[i]);
			}else{
				System.out.print(nums[i]+",");
			}
		}
		System.out.println("};");
	}

        运行效果:

案例二

        插入数据:有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 

        思路分析:首先判断此数第一次小于数组中哪个元素,然后将此数插入,插入后此元素之后的数,依次后移一个位置。

        代码展示:

	public static void main(String[] args) {
		
		//创建Scanner类对象
		Scanner sc=new Scanner(System.in);
		
		int[] scores={99,85,83,63,60};
		
		//1)声明一个长度比原来数组长度大1的数组
		int[] newScores=new int[scores.length+1];
		
		//2)将原来数组里元素按照顺序存入到新的数组中
		for (int i = 0; i < scores.length; i++) {
			newScores[i]=scores[i];
		}
		System.out.println("插入学生成绩前的数组:");
		for (int i : newScores) {
			System.out.print(i+" ");
		}
		System.out.println();
		
		//3)使用Scanner类获取你要增加的学员成绩
		System.out.println("请输入你要增加的学员成绩:");
		int insert =sc.nextInt();
		//设置插入的成绩插入的位置,默认将其插入在数组最后位置
		int index=newScores.length-1;
		
		//4)通过循环比较获取增加的学员成绩的插入位置
		for (int i = 0; i < newScores.length; i++) {
			if (insert>newScores[i]) {
				index=i;
				break;
			}
		}
		
		//5)从插入元素插入位置开始及之后的元素依次往后移动一位(从最后一个元素开始,倒着移动)
		for (int i = newScores.length-1; i < index; i--) {
			newScores[i]=newScores[i-1];
		}
		
		//6)将要插入的成绩存储到插入位置
		newScores[index]=insert;
		
		//输出新数组所有元素
		System.out.println("插入学生成绩后的数组:");
		for (int i : newScores) {
			System.out.print(i+" ");
		}
	}

        运行效果:

案例三

        逆序:将一个数组逆序输出。

        思路分析:定义一个新的数组,长度和原数组长度相同

        代码展示:

	public static void main(String[] args) {

		int[] nums={24,53,45,67,38,18,86,46,75};

		System.out.print("原始数组为:int[] nums={");
		for (int i = 0; i < nums.length; i++) {
			if (i==nums.length-1) {
				System.out.print(nums[i]);
			}
			else{
				System.out.print(nums[i]+",");
			}
		}
		System.out.println("};");
		//定义一个新的数组,个数和nums数组个数相同
		int[] newNums=new int[nums.length];
		System.out.println("数组逆序后:int[] newNums={");
		for (int i = 0; i < nums.length; i++) {
			newNums[i]=nums[nums.length-i-1];
			if (i==newNums.length-1) {
				System.out.print(newNums[i]);
			}
			else{
				System.out.print(newNums[i]+",");
			}
		}
		System.out.println("};");
	}

        运行效果:

案例四

        元素交换:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 

        思路分析:把最大和最小取出来,剩下的数据放在一个数组里,然后定义一个新数组,和原数组长度一样,新数组的第一个和最后一个是最大值和最小值,直接放进去,刚才的那个剩下的数据按照顺序放在新数组的中间

        代码展示:

	public static void main(String[] args) {
        int[] nums={24,53,45,67,38,18,86,46,75};
		
		//打印输出原始数组
		System.out.print("原始数组为:int[] nums={");
		for (int i = 0; i < nums.length; i++) {
			if (i==nums.length-1) {
				System.out.print(nums[i]);
			}
			else{
				System.out.print(nums[i]+",");
			}
		}
		System.out.println("};");
		
		//获取最大数
		int max=nums[0];
		for (int i = 1; i < nums.length; i++) {
			if(nums[i]>max){
				max=nums[i];
			}
		}
		//获取最小数
		int min=nums[nums.length-1];
		for (int i = nums.length-1; i > 0; i--) {
			if(nums[i]<min){
				min=nums[i];
			}
		}
		
		//定义一个排除最大数和最小数的数组
		int j = 0;
		int[] numOthers=new int[nums.length-1];
		for (int i = 0; i < nums.length; i++) {
			if(nums[i]!=max&&nums[i]!=min){
				numOthers[j]=nums[i];
				j++;
			}
		}
		
		//打印输出交换后的数组
		
		//定义一个新的数组,个数和nums数组个数相同
		int[] newNums=new int[nums.length];
		System.out.print("交换后的数组为:int[] newNums={");
		for (int i = 0; i < nums.length; i++) {
			if (i==nums.length-1) {
				newNums[i]=min;
				System.out.print(newNums[i]);
			}else if(i==0){
				newNums[i]=max;
				System.out.print(newNums[i]+",");
			}
			else{
				newNums[i]=numOthers[i-1];
				System.out.print(newNums[i]+",");
			}
		}
		System.out.println("};");
	}

        运行效果:

案例五

        移动:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

        思路分析:前面各数后移m个位置,最后m个数就变成前面m个数,说明是将后面m个数放在数组的最前面
         * 例如:原数组{24,53,45,67,38,18,86,46,75}

         * 将nums数组中的后三位放在前面,在新的数组则为:
         *             {86,46,75,24,53,45,67,38,18}

        代码展示:

	public static void main(String[] args) {
		//有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

		//定义一个Scanner键盘输入对象
		Scanner sc=new Scanner(System.in);
		
		//定义一个数组
		int[] nums={24,53,45,67,38,18,86,46,75};
		//打印输出原始数组
		System.out.print("原始数组为:int[] nums={");
		for (int i = 0; i < nums.length; i++) {
			if (i==nums.length-1) {
				System.out.print(nums[i]);
			}
			else{
				System.out.print(nums[i]+",");
			}
		}
		System.out.println("};");

		System.out.println("请输入数组后面的几个数放在最前面:");
		int court=sc.nextInt();
		
		//定义一个新的数组
		int[] newNums=new int[nums.length];
		for (int i = 0; i < newNums.length; i++) {
			if (i<court) {
				newNums[i]=nums[nums.length-court+i];
			}
			else
			{
				newNums[i]=nums[i-court];
			}
		}
		
		//打印输出新的数组
				System.out.print("新的数组为:int[] newNums={");
				for (int i = 0; i < newNums.length; i++) {
					if (i==newNums.length-1) {
						System.out.print(newNums[i]);
					}
					else{
						System.out.print(newNums[i]+",");
					}
				}
				System.out.println("};");
	}

        运行效果:

       码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,请关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

猜你喜欢

转载自blog.csdn.net/hh867308122/article/details/126778631