輸入2後,無法顯示元素
package myWork; import java.util.Scanner; public class work1 { //輸入陣列數字 public int[] inSertNum() { int[] saveArry= new int[10]; for(int i =0; i< saveArry.length-1; i++) { System.out.println("請輸入第"+ (i+1) +"個數據"); Scanner sc= new Scanner(System.in); int num = sc.nextInt(); saveArry[i] = num; } return saveArry; } //打印陣列元素 public void showArray(int[] array) { System.out.println("數組元素為:"); for(int i =0; i< array.length; i++) { System.out.print(array[i]+" "); } main(null); } //主程式 public static void main(String[] args) { 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("*******************"); work1 myInsertNum= new work1(); //一開始int陣列初始值 int[] array = new int[0]; //輸入對應數字的操作 System.out.println("請輸入對應數字的操作!"); Scanner sc= new Scanner(System.in); int oprationNum = sc.nextInt(); if(oprationNum==1) { array = myInsertNum.inSertNum(); myInsertNum.showArray(array); }else if(oprationNum==2) { myInsertNum.showArray(array); }else if(oprationNum==3) { }else if(oprationNum==4) { }else if(oprationNum==0) { }else { System.out.println("無此操作,請從些輸入!"); } } }
不知程序哪裡寫錯,輸入2後,數組裡的元素會打印不出來~~
但輸入1卻會跑打印陣列元素那段~
感覺好像輸入數組後,array 的賦值沒成功...
老師可否幫我看看
源自:Java方法
8-1 综合案例需求
25
收起
正在回答
2回答
可能是因为你的程序没有写for循环,输入一个指令后就无法继续输入下一条指令了。每次输入指令都要重新运行程序。
当你输入2时,之前的1操作已经被重置了,每次开程序数组array都被初始化了。
(以上只是我的个人见解,还需等老师来讲)
Tender10
2017-07-21 15:50:19
代码中出现你所说的问题就在于showArray()方法中的main(null);这样会导致之前保存的数据都会消失,解决方法,将main(null);注释掉,并且将菜单的展示定义在一个方法中实现,然后为了让用户循环输入应该在操作外包上一层while循环。如下所示,针对你的代码做了修改:
import java.util.Scanner; public class work1 { 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[] inSertNum() { int[] saveArry= new int[10]; for(int i =0; i< saveArry.length-1; i++) { System.out.println("請輸入第"+ (i+1) +"個數據"); Scanner sc= new Scanner(System.in); int num = sc.nextInt(); saveArry[i] = num; } return saveArry; } //打印陣列元素 public void showArray(int[] array) { System.out.println("數組元素為:"); for(int i =0; i< array.length; i++) { System.out.print(array[i]+" "); } // main(null); } //主程式 public static void main(String[] args) { work1 myInsertNum= new work1(); myInsertNum.notice(); //一開始int陣列初始值 int[] array = new int[0]; Scanner sc; int oprationNum; while(true){ //輸入對應數字的操作 System.out.println("請輸入對應數字的操作!"); sc= new Scanner(System.in); oprationNum = sc.nextInt(); if(oprationNum==1) { array = myInsertNum.inSertNum(); myInsertNum.showArray(array); myInsertNum.notice(); }else if(oprationNum==2) { myInsertNum.showArray(array); }else if(oprationNum==3) { }else if(oprationNum==4) { }else if(oprationNum==0) { }else { System.out.println("無此操作,請從些輸入!"); } } } }
建议if判断可以换成switch语句会更加高效,另外在插入数据的时候应该加入数据不能为0的判断更符合题意。上述代码只是帮助你解决了输入2不能展示数据的问题,其他的问题希望你能够自己修改一下。如果还有什么不明白的问题,可以继续提问。
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星