问题一:程序运行直接跳过提示信息?问题二:重新对数组进行添加元素,在查询数组里面的元素没有变?

问题一:程序运行直接跳过提示信息?问题二:重新对数组进行添加元素,在查询数组里面的元素没有变?


package com.imooc.zy;


import java.util.Scanner;


public class Main {

//提示信息

    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 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;

}

System.out.println("数组元素为:");

for(int x:a) {

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

}

System.out.println();

return a;

}

//显示所有数据

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

System.out.println("数组元素为:");

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

if (a[i]!=0) {

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

}

}

System.out.println();

}

    

    

    

    

public static void main(String[] args) {

Main main = new Main();

boolean flag = true;

Scanner sc = new Scanner(System.in);

int[] a = new int[10];

a=main.insertData();


while(flag) {

main.notice();

      System.out.println("请输入对应的数字进行操作:");

int input = sc.nextInt();

switch (input) {

case 0:

flag = false;

System.out.println("系统退出!!");

break;

case 1:

main.insertData();

break;

case 2:

main.showData(a,a.length);

break;

default:

System.out.println("输入错误!!!");

break;

}

}

sc.close();


}


}


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

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

1回答
Tender10 2018-06-26 11:00:30

1、因为在while循环外,你先调用了insertData()方法,需要把这句代码注释掉,否则程序运行就会直接调用insertData()方法。

2、产生第二个问题原因一样是因为在while循环外,你先调用了insertData()方法的缘故,只需要把这个代码去掉,第二个问题也就不存在了。

3、注意显示插入的数据时,当没有在指定位置插入数据的时候,最后一位0不应该显示出来,注意在showData()方法中判断数组最后一位是否为0,如果是就不显示即可,只显示前面9个数据。

  • 提问者 IT菜鸟123 #1
    我在main方法里把a=main.insertData();注释调之后,当我查看数组里面添加好的元素时里面的元素都为0,我该怎么操作?把a=main.insertData();放在哪里好?
    2018-06-26 12:32:37
  • Tender10 回复 提问者 IT菜鸟123 #2
    因为insertData()是一个有返回值的方法,插入数据应该将返回的数组赋值给在main()方法里定义的数组a,所以将main()方法里while循环外面的注释掉以后,在case1语句里调用main.insertData();应该是a=main.insertData();将数组赋值给a。
    2018-06-26 13:49:53
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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