輸入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 星