需求说明:
模拟五子棋博弈过程中的异常声明和异常抛出,判断用户所下棋子的位置,是否超越了棋盘的边界。
棋盘的横坐标的范围为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(); } }