簡體   English   中英

Java方法中如何避免兩次或多次退貨

[英]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;

在每次循環迭代中,您將變量設置為trueboolean stay = true; ),這樣您就只能因為該變量設置為false而退出循環。 因為我們從第一個if(..)中刪除了第一個return並現在添加了變量,所以我們必須將第二個if更改為else if ,這樣如果第一個if評估為 true,它就不會被執行。 最后,將新變量添加為 while 條件的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM