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

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

我有一个验证字符串的方法。
在我的作业中,一个方法不能有超过1个返回。
如何使此方法在do while循环结束后只返回一个值?

  1. public final static String CHOIX_MENUS_VALIDES = "1234";
  2. public static String validateMenu() {
  3. String choice;
  4. String choice1 = String.valueOf(CHOIX_MENUS_VALIDES.charAt(0));
  5. String choice2 = String.valueOf(CHOIX_MENUS_VALIDES.charAt(1));
  6. String choice3 = String.valueOf(CHOIX_MENUS_VALIDES.charAt(2));
  7. String choice4 = String.valueOf(CHOIX_MENUS_VALIDES.charAt(3));
  8. do {
  9. choice = validateString(MSG_SOLL_MENU, MSG_ERR_MENU, 1, 4, true);
  10. if (choice.trim().equals(choice1) || choice.trim().equals(choice2) || choice.trim().equals(choice3) || choice.trim().equals(choice4)) {
  11. return choice; //Here I don't want to return the choice
  12. }
  13. if (!choice.equals(choice1) || !choice.equals(choice2) || !choice.equals(choice3) || !choice.equals(choice4)) {
  14. System.out.println(MSG_ERR_MENU);
  15. }
  16. } while(!choice.trim().equals(choice1) || !choice.trim().equals(choice2) || !choice.trim().equals(choice3) || !choice.trim().equals(choice4));
  17. return choice;
  18. }

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

soat7uwm

soat7uwm1#

简单的解决方案是替换第一个返回 return choice; //在这里我不想返回选择
通过 break ;
另一种解决方案是使用布尔变量(让 stay )

  1. do{
  2. boolean stay = true;
  3. choice = validateString(MSG_SOLL_MENU, MSG_ERR_MENU, 1, 4, true);
  4. if (...){
  5. stay = false;
  6. }
  7. else if(...) {...}
  8. while(stay && ...);
  9. return choice;

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

展开查看全部

相关问题