【发布时间】:2020-06-02 13:22:28
【问题描述】:
我有一个方法,它有一个带有一组规则的 Map,我试图将这些规则应用于带有 if 条件的输入。
当条件匹配时,if 将中断循环并返回匹配的值。如果没有任何条件匹配,我需要返回输入不满足任何给定条件的null 输出。
我当前的代码如下
public static String matching(String input){
HashMap<String, String> hm = new HashMap<String, String>();
//Key,Value pair in Hashmap represents Name of condition(Key) and Condition(value)
for (Map.Entry mapElement : hm.entrySet()) {
String value = mapElement.getValue();
if(input.equals(condition)){
return input;
break;
}
}
return null;
}
假设地图有 5 个条目,满足当前输入的条件出现在第 5 个位置。前四个测试返回null,当第 5 个位置的条件匹配时,它将返回匹配的条件。但我只想在评估地图中的所有条件后返回输出。
我尝试使用continue; 将else if 放在if 之后的循环中,但结果相同。
请问,我该如何解决这个问题?
【问题讨论】:
-
请正确格式化您的代码。
-
你不能从你的函数返回然后再返回执行它。
-
只是一个评论:它不会解决你的问题,但是
break在return语句之后是完全没有必要的。 -
只需在 for 循环中放置一个临时变量,将其赋值为 null。如果您的 if 语句满意,请将满意的值分配给您的临时变量。在所有迭代完成后,它将返回最后一个满意的值,否则将返回 null。然后你可以说所有条目都迭代了。