题目简述:电影院座位默认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,从而重新执行程序。