java - 如何避免Java方法中的两个或多个返回
问题描述
我有这个验证字符串的方法。
在我的任务中,我不能在一个方法中返回超过 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
;
另一种解决方案是使用布尔变量(让命名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
为 an ,这样如果第一个评估为真else if
,它就不会被执行。if
最后,将新变量添加为 while 条件的一部分。
推荐阅读
- r - R:从多个图像目录读取 EXIF 数据
- c++ - 创建可折叠模板参数包
- asp.net - Net 2.1,Angular 7,被 CORS 策略阻止:请求中不存在“Access-Control-Allow-Origin”标头
- xpages - xpages:如何模拟表单的自动启动属性
- python - 为什么“列表”对象不可调用”使用类
- reactjs - componentDidMount() 中的 fetch 问题
- java - 通过表单传递映射对象:选择标签
- c++ - 对 ncurses 使用本机 c++ 包装器,如何创建菜单/子菜单系统?
- c++ - C++:最优复杂度函数
- prolog - SWI序言中的否定优先级