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

本文详细介绍了一种利用异常处理机制来确保五子棋游戏中用户输入的棋子位置不超出棋盘边界的实现方法。通过定义棋盘的坐标范围,并在用户尝试下棋时检查坐标的有效性,系统能够优雅地捕获并处理越界错误,提供清晰的错误提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

返回本章节

返回作业目录


需求说明:

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

棋盘的横坐标的范围为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();
	}
}

	

 

疯狂Java讲义课后题 自己编写的 对于这个程序,最关键的在于判断是否连成5个棋子 一般的盘大小为15*15, 用大小为[15][15]的二维数组来盛放盘 要判断是否连成5个棋子,就要对棋子的周围进行遍历 这里规定遍历的方式为(左,右),(上,下),(左上,右下),(右上,左下) 4种最特殊的情况:  左上角:只进行右,下,右下  左下角:只进行右,上,右上  右上角:只进行左,下,左下  右下角:只进行左,上,左上 4种特殊情况(不含4个角):  上边界:不进行上遍历  下边界:不进行下遍历  左边界:不进行左遍历  右边界:不进行右遍历 对其他位置的遍历则为(左,右),(上,下),(左上,右下),(右上,左下) 每下一个棋子,都要判断它所处的位置来选择遍历的方式且每次遍历时都要判断是否到达边界,以防数组越界 这样的话,现实起来就会挺复杂 所以改进的方法是这样的: 用大小为[17][17]的二维数组来盛放盘 这样就可对每个位置棋子用相同的遍历方式来遍历,即(左,右),(上,下),(左上,右下),(右上,左下)。并且不需要判断是否到达边界,大大降低了复杂性。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 盘为如图所示的那么大。而实际上程序中规定的“盘”为中间的部分(即棋子只能摆在从1-15的位置上,否则会被程序告知摆放的位置不对),这样一来,不管棋子位于“盘”中的哪个位置,都可以采用(左,右),(上,下),(左上,右下),(右上,左下)的方式遍历而不会发生数组越界的错误,且无需判断是否到达边界。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

明金同学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值