Java 如何在布尔方法中返回错误?
我有一个返回True或False的方法,这取决于输入是“y”还是“n”。然而,我希望它返回一个错误时,任何其他输入的问题。我问的是如何返回字符串,例如在布尔方法中。以下是我到目前为止的情况: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
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.使用试接块。有关说明和详细信息,请参见