麻烦能看一下我的代码么?为什么在输入1将4个数字放入数组中后,使用再输入2得到的是五个零?

麻烦能看一下我的代码么?为什么在输入1将4个数字放入数组中后,使用再输入2得到的是五个零?

public int[] insertData(){

int[] data=new int[5];

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

System.out.println("请输入第"+(i+1)+"个数据:");

Scanner sc = new Scanner(System.in);

data[i]=sc.nextInt();

if(data[i]==0) {

System.out.print("插入的数据不能为零!请重新输入!");

System.out.println();

i=i-1;

continue;

}

}

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

for(int j=0;j<data.length-1;j++) {

System.out.print(data[j]);

System.out.print("  ");

}

return data;

}


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

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

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

System.out.print(a[j]);

System.out.print("  ");

}

}

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

// 调用输出界面方法

Project jm = new Project();

jm.notice();

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

// 遍历扫描从键盘输入的数字

Scanner sc = new Scanner(System.in);

String str = sc.next();

int[] mainData=new int[5];

if (str=="0") {

System.out.println("退出程序!");

break;

}


switch (str) {


// 当键盘输入1时,调用insertData方法插入数据。之后调用notice方法显示下一步操作。

case "1":

Project id=new Project();

mainData=id.insertData();

System.out.println();

Project not1 = new Project();

not1.notice();

for(int j=0;j<mainData.length;j++) {

System.out.print(mainData[j]);

System.out.print("  ");

}

break;

// 调用

case "2":

Project sd = new Project();

sd.showData(mainData, 5);

break;


正在回答

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

2回答

同学你好,建议同学将int[] mainData = new int[5];定义在循环外。Scanner对象定义在循环外,Project对象定义一个即可,输入对应的数字进行操作,所以可以使用nextInt()从键盘接收整型数据,case后用整型数据表示,修改后如下:

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

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

好帮手慕阿满 2019-01-28 11:58:55

同学你好,同学将定义数组mainData的代码写在了循环中,每循环一次,相当于创建一个新的数组,所以之前插入的数据全都没了,所以建议同学将int[] mainData = new int[5];定义在循环外。另外Project类的对象定义一个即可,可重复使用,还用Scanner对象也建议定义在循环外,避免重复创建,占用内存资源。

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

  • 提问者 慕神4564611 #1
    你好,我把代码改成如下://主方法 public static void main(String[] args) { // 调用输出界面方法 Project jm = new Project(); jm.notice(); for(int i=0;;i++) { // 遍历扫描从键盘输入的数字 Scanner sc = new Scanner(System.in); String str = sc.next(); int[] mainData; mainData=new int[5]; if (str=="0") { System.out.println("退出程序!"); break; } switch (str) { // 当键盘输入1时,调用insertData方法插入数据。之后调用notice方法显示下一步操作。 case "1": Project id=new Project(); mainData=new int[5]; mainData=id.insertData(); System.out.println(); Project not1 = new Project(); not1.notice(); for(int j=0;j<mainData.length;j++) { System.out.print(mainData[j]); System.out.print(" "); } break; 为什么还会存在一样的问题呢?谢谢
    2019-01-30 08:39:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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