Java经典例题05:在一维数组中插入数据

在一维数组中插入数据:

        有一组学员的成绩{99,85,82,63, 60},已经是按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序

难度指数:★★★★

方法:

        将当前数组中的数据元素存储到比当前数组大1的数组中。

解题思路分析

        简化思路:

        1.声明一个长度比原来数组长度大1的数组。

        2.将原来数组里元素按照顺序存入到新的数组中。

        3.使用Scanner类获取你要增加的学员成绩。

        4.通过循环比较获取增加的学员成绩的插入位置。

        5.从插入元素插入位置开始及之后的元素依次往后移动一位(从最后一个元素开始,倒着移动)。

        6.将要插入的成绩存储到插入位置。

        详细思路:

        1.声明一个scores数组用来存储当前学员的成绩。

        2.声明一个比scores数组大1的newScores数组。

        3.将scores数组中的数据元素通过赋值,存储到newScores数组当中。

        4.使用Scanner类从控制台接收新学员成绩,存储到relt变量当中。

        5.声明一个变量index表示newScores数组的最后一个下标的值。

        6.将relt变量当中的新学员成绩与newScores数组中学院成绩相比较,第一个比relt成绩小的数组元素下表赋值给index变量。

        7.使用for循环将比relt值小的数组元素向后移一位。

        8.relt赋值给newScores数组下标为index值的数据元素。

        完成数组中插入数据。

代码如下:

	public static void main(String[] args) {
		
		//1.声明一个scores数组用来存储当前学员的成绩。
		int[] scores = {99,85,82,63,60};
		
		//2.声明一个比scores数组大1的newScores数组。
		int[] newScores = new int[scores.length + 1];
		
		//3.将scores数组中的数据元素通过赋值,存储到newScores数组当中。
		for(int i = 0 ; i < scores.length  ; i++){
			newScores[i] = scores[i];
		}
		System.out.println("---------插入数据前的newScores数组---------");
		for (int i = 0; i < newScores.length; i++) {
			System.out.print(newScores[i] + "  ");
		}
		System.out.println();
		
		//4.使用Scanner类从控制台接收新学员成绩,存储到relt变量当中。
		Scanner in = new Scanner(System.in);
		System.out.println("请输入学员成绩:");
		int relt = in.nextInt();
		
		//5.声明一个变量index表示newScores数组的最后一个下标的值。
		int index = newScores.length - 1;
		
		//6.将relt变量当中的新学员成绩与newScores数组中学院成绩相比较,
		//  第一个比relt成绩小的数组元素下表赋值给index变量。
		for(int i = 0 ; i < newScores.length ; i++){
			if(relt > newScores[i]){
				index = i;
				break;
			}
		}
		
		//7.使用for循环将比relt值小的数组元素向后移一位。
		for(int i = newScores.length-1 ; i > index ; i--){
			newScores[i] = newScores[i-1];
		}
		
		//8.relt赋值给newScores数组下标为index值的数据元素。
		newScores[index] = relt;
		
		//输出newScores数组中的数据元素。
		System.out.println("---------插入数据后的newScores数组---------");
		for (int i = 0; i < newScores.length; i++) {
			System.out.print(newScores[i] + "  ");
		}
	}

 

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值