题目简述:电影院座位默认10排10座,座位为空用0来表示,有人则用1来表示。

涉及知识点:二维数组,方法,for循环,if语句。

解题思路:

1.用户购票成功后需要显示电影座位表,则定义一个方法,方便调用。

参考代码:

public void show(int[][] seat) {
		     for(int i=0;i<seat.length;i++) {
		    	 for(int j=0;j<seat[i].length;j++) {
			    	 System.out.print(seat[i][j]+" ");//输出每行的元素
			     }
		    	 System.out.println();
		     }
	   }

 2.定义一个方法,来判断所选座位是否有人。

参考代码:

public boolean judge(int[][] seat) {
		   boolean flag=false;
		   Scanner sc=new Scanner(System.in);//扫描器,用于控制台手动输入
		   System.out.println("请问您要选择第几排:");
		   int row = sc.nextInt();
		   System.out.println("请问您要选择第几列:");
		   int col = sc.nextInt();
		   for(int i=0;i<seat.length;i++) {
		    	 for(int j=0;j<seat[i].length;j++) {
                     //判断所选位置是否为0
			    	 if(seat[col-1][row-1]==0) {
			    		 flag=true;//表示购票成功
			    		 seat[col-1][row-1]=1;//将买票的位置赋值为1
			    	 }
			     }
		     }
		   return flag;
	   }

 3.主函数内根据整个购票流程完善代码,对以上两个方法进行调用

public static void main(String[] args) {
		     Cinema c=new Cinema();//定义一个对象,便于调用方法
		     Scanner sc=new Scanner(System.in);//扫描器
		     int[][] seat=new int[10][10];//定义一个数组用来表示座位位置
		     System.out.println("=============欢迎登录电影院购票系统==============");
		     System.out.println("本场电影的座位表如下:");
		     c.show(seat);
		     System.out.println("请问你要购买几张电影票?");
		     int num=sc.nextInt();
		     for(int i=1;i<=num;i++) {
		    	 if(c.judge(seat)) {
		    		    System.out.println("第"+i+"张电影票购买成功");
		    		    c.show(seat);//显示购票后的座位表
		    		    if(i==num) {//用于判断购票是否结束
		    		    	System.out.println("您的电影票已经购买成功,祝您观影愉快");
		    		    	break;
		    		    }
		    	 }else {
		    		 System.out.println("购票失败,请重新选择");
		    		 c.show(seat);
		    		 i--;//当前购票失败,次数不算,重新执行
		    	 }
		     }
	}

总结:

1.自己先构思整个流程如何实现,然后进行代码编写。

2.对于重复使用的代码段可以定义一个方法,减少代码量。(例如本题中的座位表的显示以及判断座位是否有人)

3.本题中对于购票成功之后停止条件的设定以及没购票成功,需要重新购买时次数需要减1,从而重新执行程序。