我试图在我的支持类中抛出一个异常并尝试在我的主类中捕获它。我正在创建一个游戏nim,我试图错误检查我的用户输入。你能帮我吗?
这是我的主类文件。我正在使用try块来捕获另一个文件中的异常。
NoSuchRowException
适用于用户输入的数字大于3且小于1的数字。
IllegalSticksException
是指用户输入超过3支或少于一根棍子的时间。
NotEnoughSticksException
是当用户输入更多的棍子,然后输入行中的内容(创建负数)。
public void actionPerformed(ActionEvent e) {
// Player move
if (e.getSource() == playButton) {
// Get the row and number of sticks to take
int row = Integer.parseInt(rowField.getText())-1;
int sticks = Integer.parseInt(sticksField.getText());
//Try Block
try { nim.play(row, sticks);}
catch (NoSuchRowException e){
JOptionPane.showMessageDialog(null, "Row must be between 1-3");
row = Integer.parseInt(rowField.getText())-1;}
catch (IllegalSticksException i){
JOptionPane.showMessageDialog(null, "Sticks Discarded must be between 1-3");
sticks = Integer.parseInt(sticksField.getText());}
catch (NotEnoughSticksException n){
JOptionPane.showMessageDialog(null, "You can not discard more sticks than the amount of sticks avaliable");
sticks = Integer.parseInt(sticksField.getText());}
// Play that move
nim.play(row, sticks);
// Redisplay the board and enable the AI button
draw();
playButton.setEnabled(false);
AIButton.setEnabled(true);
// Determine whether the game is over
if (nim.isOver()) {
JOptionPane.showMessageDialog(null, "You win!");
playButton.setEnabled(false);
}
这是我的支持班。如果棒(S)或行(R)中有错误,我试图抛出这些异常。
public void play(int r, int s){
Sticks[r]=Sticks[r]-s;
if (r>3||r<1){
throw new NoSuchRowException();}
if (r>3||r<1){
throw new IllegalSticksException();}
if(s> Sticks[r]){
throw new NotEnoughSticksException();}
}