请教一下老师为什么插入的数据不能保存到int[] arr??插入数据功能没有能够存储插入的数据??

请教一下老师为什么插入的数据不能保存到int[] arr??插入数据功能没有能够存储插入的数据??

package com.work;


import java.util.Scanner;


//综合任务:简单的数组中数据的管理系统

public class WorkTask {

//创建一个显示提示信息的方法

public void notice() {

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("请输入对应的数字进行操作:");

}

static Scanner sc=new Scanner(System.in);

//创建一个插入数据的方法

public int[] insertData() {

int arr[]=new int[10];

    for(int a=0;a<arr.length-1;a++){//初始化元素

    System.out.println("请输入第"+(a+1)+"个数据");

            arr[a]=sc.nextInt();

    }

    System.out.println("显示数据");

    for(int n:arr) {

            if(n!=0) {

            System.out.print(n+" ");

            }else {

            continue;

            } 

    }

    System.out.println();

return arr;

}

//创建一个显示数据的方法

public void  showData(int[] a,int length ) {

System.out.print("显示所有的数据");

for(int n=0;n<length;n++) {

if(a[n]!=0) {

System.out.print(a[n]+"  ");

}else {

continue;

}

}

System.out.println();

}   

//创建一个在指定位置插入一个数据的方法

public void insertAtArray(int[] a,int c,int k) {

System.out.println("请输入要插入的数据");

c=sc.nextInt();

System.out.println("请输入要插入的位置");

k=sc.nextInt();

}

//查询能被三整除的数据

public void divThree(int []a) {

System.out.println("能被三整除的数据为:");

for(int n:a) {

if(n%3==0) {

System.out.print(n+" ");

}

}

System.out.println();

}

public static void main(String[] args){


        //在WorkTask中建一个对象insert

WorkTask insert=new WorkTask();

//在WorkTask中建一个对象show

WorkTask show=new WorkTask();

//在WorkTask中建一个对象array

WorkTask array=new WorkTask();

//在WorkTask中建一个对象div

WorkTask div=new WorkTask();

//在WorkTask中建一个对象work,

        WorkTask work=new WorkTask();

        

        int[] arr=new int[10];

        

        int s;

        do {work.notice();

           s=sc.nextInt();

           switch(s) {

           case 1:arr=insert.insertData();break;

           case 2:show.showData(arr, 10);;break;

           case 3:int c=0,k=0;

             array.insertAtArray(arr, c, k);break;

           case 4:div.divThree(arr);break;

           default:

          if(s>4&s!=0)System.out.println("请输入正确的数字");break;

 }

           }while(s!=0);

         if(s==0) {

        System.out.println("退出");

         }


正在回答

登陆购买课程后可参与讨论,去登陆

3回答
//创建一个在指定位置插入一个数据的方法
public void insertAtArray(int[] a,int c,int k) {
System.out.println("请输入要插入的数据");
c=sc.nextInt();
System.out.println("请输入要插入的位置");
k=sc.nextInt();
}

你的这个方法只是输入了要插入的数据和插入的位置,并没有对数组进行插入操作,可以按如下思路接着完成一下:

定义一个for循环,循环变量i初识值为a.length-1,判断条件是i>=k; i的值是递减的,循环体中的内容就是把前一个元素的值赋值给后一个元素,即a[i]=a[i-1];这样就达到了移位的效果。循环外将c赋值给a[k]

祝学习愉快!


  • 陆小仙 提问者 #1
    谢谢老师,一开始我也有想过方法中数组参数怎么去处理,因为就指定了插入的参数,第一个数组参数没有去处理,然后就想着直接输入数据系统应该就自动去选择了,我去试试看
    2017-10-26 18:11:36
  • 陆小仙 提问者 #2
    非常感谢!
    2017-10-28 10:15:35
提问者 陆小仙 2017-10-28 10:20:39

老师,请教个问题,,主方法中创建一个对象就可以了,这是为什么?好几个方法就用一个对象调用

  • 通过一个对象调用多个方法才可以将不同方法的结果进行有效传递呀~~
    2017-10-28 19:50:56
  • 提问者 陆小仙 #2
    那我可以这么理解吗?就是说一个对象它存储了类所创建的内存空间的地址,所以只需要一个对象就可以调用这个类里面的所有东西
    2017-10-28 19:56:21
  • 好帮手慕珊 回复 提问者 陆小仙 #3
    是的,可以这么理解。
    2017-10-29 10:22:49
好帮手慕珊 2017-10-26 14:12:38

你好!你的代码中插入数据的功能没有问题呀,你指的是指定位置插入数据的方法吗?另外,主方法中创建一个对象就可以了,不用每个方法调用都用不用的对象。祝学习愉快!

  • 提问者 陆小仙 #1
    老师,我运行了下可是就实现不了,运行中不能把3功能的插入数据,在3功能中插入一个数,运行2然后数据还是一开始的数据,并没有吧插入的数据保存进数组,那是不是我插入的方法写错了,??
    2017-10-26 17:53:39
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师