Java 如何在布尔方法中返回错误?

Java 如何在布尔方法中返回错误?,java,methods,return,boolean,Java,Methods,Return,Boolean,我有一个返回True或False的方法,这取决于输入是“y”还是“n”。然而,我希望它返回一个错误时,任何其他输入的问题。我问的是如何返回字符串,例如在布尔方法中。以下是我到目前为止的情况: public static boolean askYesNo(String question1) { question = question1; System.out.println(question); answer = kbdScanner.next(); if (ans

我有一个返回True或False的方法,这取决于输入是“y”还是“n”。然而,我希望它返回一个错误时,任何其他输入的问题。我问的是如何返回字符串,例如在布尔方法中。以下是我到目前为止的情况:

public static boolean askYesNo(String question1) {
    question = question1;
    System.out.println(question);
    answer = kbdScanner.next();
    if (answer.charAt(0) == 'y') {
        return true;
    }
    else if (answer.charAt(0) == 'n') {
        return false;
    }
    return ?????;
}
谢谢

就这么办吧

抛出新的IllegalArgumentException(问题1)

一种可能的解决方案是在调用方法之前验证答案。 因此,在抽象代码中:

while (answer is not y or n) {
   ask question again
}
call method

Java中的方法始终只能有一个返回类型。在您的例子中,这是布尔值,因此不能返回字符串

你需要的是一个例外。如果发生意外情况,则可能引发异常。请在此处阅读更多信息:


在您的情况下,我建议使用
IllegalArgumentException
,因为您希望处理方法输入无效的情况。

您可能需要了解异常;或者您可能希望使用
布尔值
作为返回类型(这样您可以返回
null
,然后在调用代码中检查
null
);或者您可能只想循环,直到得到
y
n
。您可以使用。它允许您返回
Optional.of(true)
Optional.of(false)
Optional.empty()
。这类似于Andy的
Boolean
建议,但更明确(需要Java8)。如果不希望方法在不相关的注释上抛出选中的异常,则可以抛出RuntimeException,是否希望“Y”和“N”有效?还是只有“y”和“n”?嗯,说得好,我没想过。我想我还是用“y”和“n”吧。为了证实这一点,如果我也想要“Y”和“N”,我只需要加上(…| |答案。charAt(0)==“Y”…)不?是的,它有效!但是我使用(answer.charAt(0)!=“y”&&answer.charAt(0)!=“n”)作为while循环的条件。非常感谢你!不客气。我知道这不是你所问问题的正确答案(用布尔方法返回字符串),但我想这就是你希望你的程序做的?是的,我希望它基本上运行,不,我不喜欢这个答案,再试一次。好的,我明白了。它比整个while循环创建要短得多,但它也会终止该方法否?是的,抛出异常会在该点终止该方法。但是,在调用该方法时,必须处理异常。i、 e.使用试接块。有关说明和详细信息,请参见