返回本章節
返回作業目錄
需求說明:
完善控制檯版五子棋,判斷用戶所下棋子的位置,是否已經存在棋子,如果已經存在,則拋出用戶自定義異常,提示用戶該位置已經有棋子。
實現思路:
創建用戶自定義異常類GoBangException,該類繼承自Exception父類,在該類定義一個無參的構造器和一個String類型形參的構造器,在該構造器調用父類有參構造器,並將該構造器中的String類型參數,傳遞給父類構造器。
在GoBang類中創建驗證棋盤(x,y)處是否存在棋子的方法check(int x,int y),如何存在則拋出異常GoBangException對象。
在下棋方法playChess(int x,int y)中首先調用check(int x,int y),然後再進行正常的下棋。
實現代碼:
public class GoBangException extends Exception { //自定義異常
public GoBangException(){ }
public GoBangException(String message){
super(message); //調用父類有參構造器
}
}
private void check(int x,int y) throws GoBangException{ //驗證棋盤(x,y)處是否已有棋子
if(board[x][y].equals("▇")){
throw new GoBangException("對不起該座標["+x+"]["+y+"]已經有棋子");
}
}
public void playChess(int x,int y) throws ArrayIndexOutOfBoundsException{ //下棋
check(int x,int y) ; //驗證棋盤(x,y)處是否已有棋子
board[x][y]="▇";
showBoard();
}
public static void main(String[] args) {
…
try{ playChess(x, y); }
catch(ArrayIndexOutOfBoundsException e){ System.out.println("所放棋子橫縱座標的範圍在0~9"); }
}