輸入2後,無法顯示元素

輸入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 的賦值沒成功...

老師可否幫我看看

正在回答

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

2回答

可能是因为你的程序没有写for循环,输入一个指令后就无法继续输入下一条指令了。每次输入指令都要重新运行程序。

当你输入2时,之前的1操作已经被重置了,每次开程序数组array都被初始化了。

(以上只是我的个人见解,还需等老师来讲)

  • 叮叮喵 提问者 #1
    非常感谢!
    2017-07-22 00:06:26
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不能展示数据的问题,其他的问题希望你能够自己修改一下。如果还有什么不明白的问题,可以继续提问。

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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