[英]How to avoid two or more returns in Java method
我有這個驗證字符串的方法。
在我的任務中,我不能在一個方法中有超過 1 個返回。
如何使這種方法在 do while 循環之后只返回一個值?
public final static String CHOIX_MENUS_VALIDES = "1234";
public static String validateMenu() {
String choice;
String choice1 = String.valueOf(CHOIX_MENUS_VALIDES.charAt(0));
String choice2 = String.valueOf(CHOIX_MENUS_VALIDES.charAt(1));
String choice3 = String.valueOf(CHOIX_MENUS_VALIDES.charAt(2));
String choice4 = String.valueOf(CHOIX_MENUS_VALIDES.charAt(3));
do {
choice = validateString(MSG_SOLL_MENU, MSG_ERR_MENU, 1, 4, true);
if (choice.trim().equals(choice1) || choice.trim().equals(choice2) || choice.trim().equals(choice3) || choice.trim().equals(choice4)) {
return choice; //Here I don't want to return the choice
}
if (!choice.equals(choice1) || !choice.equals(choice2) || !choice.equals(choice3) || !choice.equals(choice4)) {
System.out.println(MSG_ERR_MENU);
}
} while(!choice.trim().equals(choice1) || !choice.trim().equals(choice2) || !choice.trim().equals(choice3) || !choice.trim().equals(choice4));
return choice;
}
如果有人可以幫助我重建該方法以最終僅返回一個值,我將不勝感激。
簡單的解決方案是替換第一個返回
return choice;
//這里不想返回選擇
break
;
另一種解決方案是使用 boolean 變量(命名為stay
)
do{
boolean stay = true;
choice = validateString(MSG_SOLL_MENU, MSG_ERR_MENU, 1, 4, true);
if (...){
stay = false;
}
else if(...) {...}
while(stay && ...);
return choice;
在每次循環迭代中,您將變量設置為true
(即boolean stay = true;
),這樣您就只能因為該變量設置為false
而退出循環。 因為我們從第一個if(..)
中刪除了第一個return
並現在添加了變量,所以我們必須將第二個if
更改為else if
,這樣如果第一個if
評估為 true,它就不會被執行。 最后,將新變量添加為 while 條件的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.