在java

时间:2015-11-04 22:31:56

标签: java exception exception-handling try-catch throw

我试图在我的支持类中抛出一个异常并尝试在我的主类中捕获它。我正在创建一个游戏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();}

    }

0 个答案:

没有答案