请老师指点作业中的不足,谢谢

请老师指点作业中的不足,谢谢

import java.util.Scanner;

public class javaProj1 {
	
	
   public void notince(){
    	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("请输入对应的数字进行操作");
   }
   
	//插入数据:
	public int[] insertData(){
		int[]a=new int[10];
		Scanner sc = new Scanner(System.in);
		for(int i =0;i<a.length-1;i++){
			System.out.println("请输入要插入的第"+(i+1)+"个数据:");
			int n =sc.nextInt();
			if(n==0){
				System.out.println("输入的数据不能为0 请重新输入");
				i--;
				continue;
				}
			
			a[i]=n;
		}
		return a;
	}
	
	//显示所有数据:
	public void showData(int[] a, int length){
		System.out.println("输入的数据为:");
		for(int i =0;i<a.length-1;i++){
			System.out.print(a[i]+"  ");
		}
		System.out.println();
	}
	
	 //在指定位置处插入数据:                              //n是插入数据  //k是指定插入位置
	 public void insertAtArray(int[] a, int n, int k) {
		              //坐标
		 for(int i =a.length-1;i>k;i--){
			 a[i]=a[i-1];
		 }
		 a[k-1]=n;
	 }
	 
	 //查询能被3整除的数据:
	 public void divThree(int[] a) {
		 System.out.println("数据中能被3整除的数有:");
		 for(int i =0;i<a.length;i++){
			 if(a[i] % 3==0){
				 System.out.print(a[i]+"  ");
			 }
			 }
			 System.out.println();
			 System.out.println("数据中不能被3整除的数有:");
			 for(int j =0;j<a.length;j++){
				 if(a[j] % 3!=0){
					 System.out.print(a[j]+"  ");
				 }
			 }
			 System.out.println();	
		 }
	 

    public static void main(String[] args) {
    	javaProj1 jp = new javaProj1();	
    	jp.notince();
       int[] a =new int[10];
       Scanner sc = new Scanner(System.in);
        int Spare;
       
       do{
    	   Spare = sc.nextInt();
    	   switch(Spare){
    	   case 1:  //插入数据
    		  a = jp.insertData();jp.notince();
    		  break;
    	   case 2:   //显示所有插入的数据
    		   jp.showData(a,a.length);jp.notince();
    		  break;
    	   case 3:  //指定位置处插入数据
    		   System.out.println("请插入数据");
    		   int n = sc.nextInt();
    		   System.out.println("请输入数据插入的位置");
    		   int  k = sc.nextInt();
    		   jp.insertAtArray(a,n, k);
    		   //插入数据后在次显示数据
    		   jp.showData(a,a.length);jp.notince();
    		   break;
    	   case 4:   //查询能被3整除,不能被3整除的数据。
    		   jp.divThree(a);jp.notince();
    		   break;
    		   default:System.out.println("输入错误 ,请重新输入!");
    		   jp.notince();
    		   break;
    	   }
    	   
       }while(Spare!=0);
            System.out.println("程序退出!");
       
        
    }
		
}	


正在回答 回答被采纳积分+1

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

1回答
好帮手慕雪 2019-03-31 11:47:03

作业需要提交哈,在指定位置处插入数据insertAtArray()不对哦。在指定位置插入数据,例如向第2位插入数据,先把第9位赋值到第10位,第8位赋值到第9位。。。。第2位赋值到第3位,最后再把新数据赋值给第2位,而不是直接覆盖第2位的数据。


  • 提问者 慕粉4132590 #1
    老师那我该怎么做呢!
    2019-04-03 12:19:32
  • 好帮手慕雪 回复 提问者 慕粉4132590 #2
    找到插入数据的位置,例如叫n,然后倒着遍历数组,把后一位赋值给前面一位即可。例如a[i]=a[i+1];遍历到n的位置。最后把数据赋值给第n位即可。
    2019-04-03 14:04:12
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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