string—如何在java方法中避免两个或多个返回

gdx19jrr  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(385)

我有一个验证字符串的方法。
在我的作业中,一个方法不能有超过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;
}

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

soat7uwm

soat7uwm1#

简单的解决方案是替换第一个返回 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;

在每次循环迭代中,您都将变量设置为 true (即。, boolean stay = true; )所以只有当变量被设置为 false . 因为我们把第一个 return 从一开始 if(..) 加上变量,我们必须改变第二个 if 到一个 else if 如果第一个 if 计算结果为true。最后,添加新变量作为while条件的一部分。

相关问题