【问题标题】:How to avoid two or more returns in Java method如何避免Java方法中的两个或多个返回
【发布时间】:2021-03-10 13:03:12
【问题描述】:

我有这个验证字符串的方法。

在我的作业中,一个方法中的返回值不能超过 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;
}

如果有人可以帮助我重建该方法以在最后只返回一个值,我将不胜感激。

【问题讨论】:

    标签: java string methods return


    【解决方案1】:

    simples的解决方法是替换第一个return

    return choice; //这里不想返回选择

    break;

    另一种解决方案是使用布尔变量(命名为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 评估为真,它就不会被执行。最后,将新变量添加为 while 条件的一部分。

    【讨论】:

      猜你喜欢
      • 2017-06-30
      • 2020-09-25
      • 2014-11-10
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      • 1970-01-01
      相关资源
      最近更新 更多