这样会执行两遍输入数据,但是不知道怎么改

这样会执行两遍输入数据,但是不知道怎么改

package com.imooc.method;

import java.util.Scanner;

/**
* Created by eileen on 2019/3/2.
*/
public class DataDemo {
   public int[] insertData(){
       int[] a=new int[10];

       for(int i=0;i<a.length-1;i++) {
           System.out.println("请输入第"+(i+1)+"个数据:" + a[i]);
           Scanner sc = new Scanner(System.in);
           a[i] = sc.nextInt();
       }
       return a;


   }
   //展示所有数据

   public void showData(int[] a,int length){
       System.out.println("数组元素为:");

       for (int n : a) {
           if(n!=0) {
               System.out.print(n + "  ");
           }

       }

   }
   //插入元素在某个位置
   public void insertAtArrary(int[] a,int n,int k){
       for(int i=a.length-1;i>k;i--) {
           a[i]=a[i-1];
       }
       a[k]=n;

       for(int m:a){
           System.out.print(m+"  ");
       }

   }
   public void divThree(int[] a){
       System.out.println("数组中能被3整除的元素为:");
       for(int i=0;i<a.length;i++){
           if(a[i]%3==0&a[i]!=0){
               System.out.print(a[i]+"  ");
           }

       }


   }
   public void notice(){
       System.out.println();
       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("***************************************");


   }

   public static void main(String[] args) {
       DataDemo hw = new DataDemo();
       boolean flag=true;
       while (flag==true) {
           int b;
           System.out.println("请输入数值进行操作:");
           Scanner sc = new Scanner(System.in);
           b = sc.nextInt();
          int[] c=hw.insertData();
           switch (b) {
               case 0:
                   // hw.notice();
                   System.out.println("退出程序!");
                   flag=false;
                   break;
               case 1:

                   hw.insertData();
                   hw.notice();
                   return;
                 
               case 2:
                   hw.showData(c, 8);
                   hw.notice();
                   break;

               case 3:

                   hw.insertAtArrary(c, 10, 9);
                   hw.notice();
                   break;

               case 4:
                   hw.divThree(c);
                   hw.notice();
                   break;
               default:
                   System.out.println("输入有误!请重新输入!");

           }
       }



   }
}

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

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

2回答
好帮手慕阿满 2019-03-06 17:43:11

同学你好,建议同学下次贴代码时,不要贴在回复中,会失去代码格式。插入数据的方法,在输出“请输入第()个数据”时,建议后面的a[i]不要输出,此时的a[i]为0,输出没有意义。另外//i=0; } c=a;这应该是注释的内容吧,c没有定义,对应的“}”。如果这是注释,return a;应该在循环外。修改后的方法,如:

http://img1.sycdn.imooc.com//climg/5c7f962a0001184806460332.jpg

祝:学习愉快~

提问者 思思_0005 2019-03-03 16:04:17

我改了下,反正结果对了,但是不懂代码严不严谨。都没判空

  • 同学的代码完成的不错,当前阶段能够实现到这个地方已经很好了,继续加油~另外同学的代码还有一个小细节需要动脑思考一下:根据作业要求,插入数据时,输入的数字不能为0,如果为0,则要求继续输入。同学可以尝试修改一下,祝学习愉快!
    2019-03-04 10:14:02
  • 提问者 思思_0005 回复 一叶知秋519 #2
    试了下这样可以 public int[] insertData(){ int[] a=new int[10]; for(int i=0;i<a.length-1;i++) { System.out.println("请输入第"+(i+1)+"个数据:" + a[i]); Scanner sc = new Scanner(System.in); a[i] = sc.nextInt(); if(a[i]==0){ // i=0; System.out.println("输入的数字不能为0,请重新输入!"); i--; continue; } //i=0; } c=a; return a; }
    2019-03-05 22:24:02
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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