3--在指定位置处插入数据的方法不太明白,请老师指导
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | package com.imooc2; import java.util.Scanner; public class ArrayManage { //显示提示信息的方法 public void cue() { System.out.println( "********************************************" ); System.out.println( " " + "1--插入数据" ); System.out.println( " " + "2--显示所有数据" ); System.out.println( " " + "3--在制定位置处插入数据" ); System.out.println( " " + "4--查询能被3整除的数据" ); System.out.println( " " + "0--退出" ); System.out.println( "********************************************" ); System.out.println( "请输入对应的数字进行操作:" ); } // 1--插入数据的方法 public int [] insertDate() { Scanner sc= new Scanner(System.in); int [] arr= new int [ 10 ]; //输入1——9的9个数字 for ( int i= 0 ;i<arr.length- 1 ;i++) { System.out.println( "请输入第" +(i+ 1 )+ "个数据:" ); arr[i]=sc.nextInt(); if (arr[i]== 0 ) { System.out.print( "同学,输入的数据不能为0!" + " " ); System.out.println( "请重新输入第" +(i+ 1 )+ "个数据:" ); arr[i]=sc.nextInt(); } } //显示输入的数组元素 System.out.println( "数组元素为:" ); for ( int n= 0 ;n<arr.length- 1 ;n++) { System.out.print(arr[n]+ " " ); } System.out.println(); return arr; } //2--显示所有数据的方法 public void showDate( int [] a, int length) { System.out.println( "数组元素为:" ); for ( int i= 0 ;i<length;i++) { if (a[i]!= 0 ) { System.out.print(a[i]+ " " ); } else { System.out.print( " " ); } } System.out.println(); } //3--在指定位置插入数据的方法 public void insertAtArray( int [] a, int n, int k) { Scanner sc1= new Scanner(System.in); //int b=sc1.nextInt(); System.out.println( "请输入要插入的数据:" ); n=sc1.nextInt(); System.out.println( "请输入要插入数据的位置:" ); k=sc1.nextInt(); for ( int i=a.length- 1 ;i>=k;i--) { a[i]=a[i- 1 ]; } a[k- 1 ]=n; } //4--查询能被3整除的数据的方法 public void divThree( int [] a) { int b= 0 ; System.out.println( "能被3整除的数据为:" ); for ( int i= 0 ;i<a.length;i++) { if (a[i]% 3 == 0 ) { b+= 1 ; System.out.print(a[i]+ " " ); } } if (b== 0 ) { System.out.println( "没有能被3整除的数据!" ); } System.out.println(); } public static void main(String[] args) { // 定义一个数组 int [] arr1= new int [ 10 ]; boolean flag= true ; //创建方法所在类的对象 ArrayManage am= new ArrayManage(); while (flag) { am.cue(); Scanner sc2= new Scanner(System.in); int p=sc2.nextInt(); switch (p) { case 1 : //赋值并调用插入数据的方法insertDate arr1=am.insertDate(); break ; //调用显示所有数据的方法 case 2 : am.showDate(arr1,arr1.length); break ; //调用在指定位置处插入数据的方法 case 3 : am.insertAtArray(arr1, 10 , 9 ); am.showDate(arr1,arr1.length); break ; //调用能被3整除的方法 case 4 : am.divThree(arr1); break ; case 0 : System.out.println( "退出" ); flag= false ; break ; default : System.out.println( "0--4以外的数字无效,请重新输入:" ); break ; } } } } |
在指定位置插入数据这个方法中的for循环不太明白是怎么回事,求运行逻辑。另外还有在case 1中:arr1=am.insertDate();break; 调用方法insertDate()的结果怎么可以直接赋值给数据arr1呢?求解释
正在回答
1、关于在指定位置插入的方法:
我们之前在插入数据的时候,插入了9个,其实最后 一个还是空着的,
比如,我想在第2个位置插入数据。则把第二个数字以及第二个数字以后的都往后移一位。
我们从数组的最后一个元素开始移动,把前一个数据赋值到后边的位置,直到移动到你想要插入数据的位置,这个时候,你再把你想要插入的数据赋值在你想要插入的位置就可以了。
2、同学是想用另外一种方式,直接调用insertDate()后,arr1就自动被赋值的方法么?
同学可以在insertDate()中传入参数,变成
public void insertDate( int[] arr){
//在方法中,不用重新new 一个int数组了,直接用传递过来的参数arr进行插入操作就可以了
//也不用再写返回值了,它直接修改的就是传进来的arr1数组。
}
调用这个方法的时候,把arr1传给这个方法
am.insertDate(arr1);
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧