1

我正在做家庭作业(Hangman)。它已经完成了,但是我需要添加一个异常并且遇到了困难。明天就要到期了,我还没有收到我导师的消息,所以我想我会在继续等待的同时在这里发帖。作业需要这样:

public boolean guessCharacter(char guess) throws Exception - 此方法返回给定字符是否是关键短语的一部分。如果猜测的字符有效,则此方法应返回 true,否则返回 false。如果之前已经猜到了猜测,则应该抛出异常(这可以通过调用此方法的代码来处理)。

我假设我需要在工作类方法中抛出异常并在调用该方法的工作类中处理它。我搜索了SO并发现了这个:

在您的 GUI 中保留对您的工作人员的引用,并在您的工作中添加一个 try catch。在 catch 中将异常分配给一个变量并为其添加一个 getter。在您的 GUI 中,当您的工作人员完成后,只需检查工作人员中是否存在异常。

这看起来像是我需要做的,但我不确定如何实现它。我想要一个代码示例。这是我到目前为止所拥有的(guessedLetters是一个集合):

public boolean guessCharacter(char guess) throws Exception
{   
    // Reset index
    if (index == keyPhrase.length())
        index = 0;

    // Determine if guessed letter is part of word
    if (guess == keyPhrase.charAt(index))
    {
        isValid = true;
        boardArray[index] = guess;  // If it is, place it correctly in array
        try {
            // SOME TYPE a = guessedLetters.add(Character.toString(guess));
        } catch (Exception e) {
        //  a = not sure what to do here;
        }
    } else
        isValid = false;

    index++;

    return isValid;
} 

需要注意的是,我根据单词的长度多次调用此方法,以检查用户对单词中每个字母的猜测。我敢肯定有一种更优雅的方式,我只是还没有想出一个。我也不确定对驱动程序类中的布尔结果有什么用处。

提前致谢!

4

1 回答 1

3

您不应该在尝试的地方捕获异常,而应该抛出异常。

由于这是家庭作业,因此这是指导而不是实际代码:

首先,检查这组字母是否已经猜到。如果它已经存在于集合中,则抛出异常 ( throw new Exception("That letter has already been guessed!")。否则,将字母添加到集合中,然后照常继续。

正如您的作业所述,此异常将“由调用此方法的代码处理”。您在演示的方法中负责的guessCharacter只是在需要时抛出适当的异常(由于重复猜测)。

于 2013-02-24T06:10:35.580 回答