Вложен, если возвращается недоступный код
Я делаю (псевдо) AI интерфейс вопросов и ответов, мой класс 'answer' представляет собой набор утверждений if: если в сообщении указано "a", то вернуть это "b".
Я хочу быть в состоянии дать ему больше глубины, вставляя вложенные if, но в этот второй if дает "Недоступный код". Что я могу сделать, чтобы решить это? Есть ли лучший способ сделать то, что я пытаюсь?
Основной класс:
System.out.println("Type your message:");
String message = talkback.beginAnswers(in.nextLine());
...
класс beginAnswers:
public String beginAnswers (String message) {
if("nothing".equalsIgnoreCase(message)) {
return "Are you sure?";
if("yes".equalsIgnoreCase(message)) {
return "ok";
}
}
....
}
1 ответ
Вы получаете ошибку, потому что первый return
заявление:
return "Are you sure?";
если когда-либо достигнут, прекратит выполнение beginAnswers()
Метод и управление возвратом к методу вызывающего. Итак, код после:
if("yes".equalsIgnoreCase(message)) {
return "ok";
}
никогда не будет достигнут
В качестве решения вы можете взять свой вложенный if
утверждение из первого:
if("nothing".equalsIgnoreCase(message)) {
return "Are you sure?";
}
else if("yes".equalsIgnoreCase(message)) {
return "ok";
}
Вы также можете увеличить все это в одну строку, используя троичный оператор, и вернуть null
если ни одно из этих 2 условий не было true
:
return "nothing".equalsIgnoreCase(message) ? "Are you sure?" :
"yes".equalsIgnoreCase(message) ? "ok" : null;
/* if message == "nothing" return "Are you sure?"
if message == "yes" return "ok"
if message != "yes" AND message != "nothing" return null
P.S: '==' and '!=' are for demonstration only. Keep using the .equals()
method for matching strings */