编写Java程序,模拟五子棋博弈过程中的异常声明和异常抛出

返回本章节

返回作业目录


需求说明:

模拟五子棋博弈过程中的异常声明和异常抛出,判断用户所下棋子的位置,是否超越了棋盘的边界。

棋盘的横坐标的范围为0~9,纵坐标范围为0~14,如果用户所放棋子的坐标超出了坐标范围,捕获系统抛出的异常,给出友好的提示信息。

实现思路:

所放棋子的坐标超出了坐标范围异常处理的实现思路:

  • 创建五子棋类GoBang,在该类中创建二维数组board,代表五子棋棋盘,二维数组长度为[10][15]。
  • 在GoBang类中创建init()方法,该方法用于为二维数组赋值,二维数组的每一个数组元素值为“+”。
  • 在GoBang类中创建下棋方法playChess(int x,int y),x和y分别代表棋盘的横坐标和纵坐标。如果x的值不在0~9,y的值不在0~14,则使用throw抛出异常。
  • 在main方法中调用playChess(int x,int y),并将该方法放入try语句块,通过catch块的ArrayIndexOutOfBoundsException异常捕捉playChess(x, y)可能抛出的数值下标越界异常。

实现代码:

public void init(){ //棋盘格子初始化
	for(int i=0;i<10;i++){
		for(int j=0;j<15;j++){		
			board[i][j]="+";
		}
	}
    this.showBoard();
}
public void playChess(int x,int y) throws ArrayIndexOutOfBoundsException{   // 在棋盘坐标(x,y)处落棋子	  
	board[x][y]="▇";
	showBoard(); //显示棋盘
 }
 public static void main(String[] args) {
	GoBang gb = new GoBang();
	gb.init();
	Scanner input=new Scanner(System.in);
	System.out.println("请输入所放棋子的横坐标:");
	int x=input.nextInt();
	System.out.println("请输入所放棋子的纵坐标:");
	int y=input.nextInt();
	try{ playChess(x, y); }
	catch(ArrayIndexOutOfBoundsException e){System.out.println("所放棋子横纵坐标的范围在0~9"); }
} 

 

public class FoodFactory {
	 public static Food createFood(String type){
         	              //通过传递的字符串参数判断用户需要的食物
	              if(type.equals("mcchicken")) {
	           	 return new McChicken();
         	             }else if(type.equals("chips")) {
	                     return new Chips();
	            } else {
	                     System.out.println("对不起没有该食物!");
	                     return null;
	          }
	  }
}
public class Client {
	public static void main(String[] args) {
	              //通过食物工厂创建食物
	             Food mcchicken=FoodFactory.createFood("mcchicken");
	             mcchicken.getFood();
	              Food chips=FoodFactory.createFood("chips");
	              chips.getFood();
	}
}

	

 

  • 26
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明金同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值