3--在指定位置处插入数据的方法不太明白,请老师指导
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呢?求解释
源自:Java方法
8-1 综合案例需求
0
收起
正在回答
1回答
1、关于在指定位置插入的方法:
我们之前在插入数据的时候,插入了9个,其实最后 一个还是空着的,
比如,我想在第2个位置插入数据。则把第二个数字以及第二个数字以后的都往后移一位。
我们从数组的最后一个元素开始移动,把前一个数据赋值到后边的位置,直到移动到你想要插入数据的位置,这个时候,你再把你想要插入的数据赋值在你想要插入的位置就可以了。
2、同学是想用另外一种方式,直接调用insertDate()后,arr1就自动被赋值的方法么?
同学可以在insertDate()中传入参数,变成
public void insertDate( int[] arr){
//在方法中,不用重新new 一个int数组了,直接用传递过来的参数arr进行插入操作就可以了
//也不用再写返回值了,它直接修改的就是传进来的arr1数组。
}
调用这个方法的时候,把arr1传给这个方法
am.insertDate(arr1);
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星