看一下为什么显示所有数据显示不出来?

看一下为什么显示所有数据显示不出来?


package com.imooc.zy;


import java.util.Scanner;


public class Main {

//插入数据

public int[] insertData() {

int a[] = new int[10];

for(int i=0;i<a.length-1;i++) {

System.out.println("请输入你要插入的第"+(i+1)+"个数字!");

Scanner sc =new Scanner(System.in);

a[i]=sc.nextInt();

if (a[i]==0) {

System.out.println("数据不能为0");

i--;

continue;

}

}

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

for(int i:a) {

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

}

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.println(a[i]+" ");

}

}

System.out.println();

}

//提示信息

    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) {

int[] a = new int[10];

Main main = new Main();

Scanner sc = new Scanner(System.in);

boolean flag = true;

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,input);

break;

default:

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

break;

}

}

sc.close();


}


}


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

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

1回答
irista23 2018-06-25 11:10:03

insertData()方法中定义了一个数组a,并返回,但是调用的地方没有使用变量来接收返回的a,所以插入数据没有起到作用,可以用main()方法中定义的a接收insertData()返回,另外case 2中showData()方法的第二个参数不应该是input,应该传数组长度,input这里你定义的是为了接收操作菜单的数字。

  • 提问者 IT菜鸟123 #1
    你的意思是我在方法里只定义了局部变量,方法调用完,局部变量里面的数组在内存中清空,然后我在main方法里面调用showData方法,没有定义main方法的全局变量吗,查出来的数组a就是空数组吗?
    2018-06-25 18:33:43
  • irista23 回复 提问者 IT菜鸟123 #2
    插入的数据没有通过返回值带出来,或者用类的成员变量
    2018-06-25 18:38:30
  • 提问者 IT菜鸟123 回复 irista23 #3
    public static void main(String[] args) { Main main = new Main(); int[] a = new int[10]; Scanner sc = new Scanner(System.in); boolean flag = true; 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(); a=main.insertData(); break; case 2: main.showData(a,a.length); break; default: System.out.println("输入错误!!!"); break; } } sc.close(); } 我这样写程序刚开始显示信息就不显示了
    2018-06-25 19:21:15
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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