В ответ на мой комментарий для добавления return "right"
в конце вы сказали:
, но это заставит программу всегда возвращаться "правильно". Поскольку после проверки условия if-else,компилятор выполнит оператор rest и всегда будет возвращать «right»
Теперь источник вашей путаницы ясен: return
не просто устанавливает значение, которое будет возвращать метод, это также немедленно выходит из метода.Так, например, return "wrong";
внутри вашего цикла немедленно выйдет из цикла и метода.Это верно для всех языков, которые я видел, которые используют ключевое слово return
(тогда как есть некоторые языки, такие как VB / VB.Net, где вы присваиваете значение имени функции, чтобы установить возвращаемое значение, но выполнение продолжаетсяобычно, пока вы не используете «выход»).
Вот почему добавление return "right";
в конце - это то, как вы решаете эту проблему, потому что код не достигнет этой точки, если он когда-либо достигнет return "wrong";
во время выполнения программы.над ним:
public String isValidID(String id) {
if(getId().length()!=6) {//checks for 6 digit id
return "wrong"; // <== Exits immediately if reached
}
else{//checks if digit contains invalid entry
for(int i=0;i<getId().length();i++){
if(Id.charAt(i)>'9'||Id.charAt(i)<'0')
return "wrong"; // <== Exits immediately if reached
}
}
return "right"; // <== Exits immediately if reached
// (granted, we would have exited
// below anyway :-) )
}