8-1作业,仿写的

8-1作业,仿写的

http://img1.sycdn.imooc.com/climg//59a1aa5d0001500104970779.jpg

import java.util.Scanner;
public class Demo {
 //插入数据
 public int[] insertDate() {
  int[] a=new int[9];
  Scanner sc=new Scanner(System.in);
  for(int i=0;i<a.length;i++) {
   System.out.println("请输入"+(i+1)+"个数据");
   a[i]=sc.nextInt();
  }
  System.out.println();
  return a;
 }
 
 
 
 
 //显示所有数据
 public void showDate(int[] a,int length) {
  System.out.println("数组元素为:");
  for(int i=0;i<a.length;i++) {
   System.out.print(a[i]+" ");
  }
  System.out.println();
 }
 
 
 
 
 
 
 //在指定位置插入数据
 public void insertAtArray(int[] a,int n,int k) {
  System.out.println("请输入要插入的数据:");
  Scanner as=new Scanner(System.in);
  n=as.nextInt();
  System.out.println("请输入要插入数据的位置:");
  k=as.nextInt();
  for(int i=(a.length-1);i>=k;i--) {
   a[i]=a[i-1];
  }
  a[k]=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]+" ");
   }
  }
 }
 
 
 
 //显示提示信息的方法
 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("请输入对应的数字进行操作:");
 }
 public static void main(String[] args) {
  Demo demo=new Demo();
  int a[]=new int[10];
  while(true) {
   demo.notice();
   Scanner s=new Scanner(System.in);
   int m=s.nextInt();
   switch(m) {
   case 1:
    a=demo.insertDate();
    break;
   case 2:
    demo.showDate(a, m);
    break;
   case 3:
    demo.insertAtArray(a, m, m);
    demo.showDate(a, m);
    break;
   case 4:
    demo.divThree(a);
    break;
   case 0:
    System.out.println("退出程序!");
    System.exit(0); break;
    default:
     System.out.println("输入错误,请重新输入");
   }
  }
  
      
 }
}

请问在指定位置处插入数据,为什么会有数据丢失呢,还有查询能被3整除的数据没有进行换行,麻烦指导一下。

正在回答

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

1回答

1、因为作业要求一开始接收9个数据,所以应该把数组长度定义为10,插入数据的方法中,循环条件变为a.length-1,这样就能少接收一个数据,为在指定位置处插入数据留出来一个位置,就不会有数据丢失了

2、查询能被3整除的方法,在方法最后写一条输出语句System.out.println();就可以进行换行了。

3、另外,作业要求插入数据时不能插入0,所以插入数据的方法中,还要对插入的数据进行判断如果为0要重新输入。

4、显示数据的方法,根据作业要求,要分为指定位置处插入数据前和数据后,所以要判断数组元素是否为0,如果为0则不输出。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 无厘头的童年 提问者 #1
    非常感谢!
    2017-08-27 12:04:54
  • 无厘头的童年 提问者 #2
    如何判断如果输入0要重新输入呢?
    2017-08-27 12:10:57
  • 好帮手慕珊 回复 提问者 无厘头的童年 #3
    在循环中定义一个整型变量n,将sc.nextInt()赋值给n,用if语句判断一下n是否为0,如果为0则调用continue语句,并将i的值减1
    2017-08-27 12:59:36
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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