【发布时间】:2014-02-06 15:50:10
【问题描述】:
我有一个 Java Web 应用程序,它要求用户在 4 个选项之间进行选择。他们可以选择 1 个、全部或 5 个选项的任意组合。他们的选择被读入一个带有真/假值的 Hashmap。如果选择了该选项,则为真,未选择为假。根据用户的选择,从要处理的资源文件夹中选择不同的文件。我的问题是代码只是一团糟的逻辑,我确信有一种更简单的方法来实现它。以下是我的问题的虚拟代码。
public class offerSelector {
public void selectOffer(Map params) {
/* Map params = Map<String, String> params = new HashMap <>();
It contains values ("internet","true),("phone","true"),("tv","true"),("cell","true")
*/
boolean option_1 = params.get("internet");
boolean option_2 = params.get("phone");
boolean option_3 = params.get("tv");
boolean option_4 = params.get("cell");
File offer = null;
if (option_1 == true && option_2 == false && option_3 == false && option_4 == false) {
offer = new File("internet_order");
}
else if(option_1 == false && option_2 == true && option_3 == false && option_4 == false) {
offer = new File("phone_order");
}
//continues like so with all possible combinations
else if(option_1 == true && option_2 == true && option_3 == true && option_4 == true) {
offer = new File("all_elements_order");
}
processOrder(offer);
}
}
【问题讨论】:
-
首先是错误的操作符。使用
==。甚至不使用它。在 Java 中,您可以只说if(option_1),前提是option_1是一个布尔字段。 -
抱歉,这只是我拼凑的代码。我的实际代码中的语法是正确的(我知道是因为它有效:))
-
那么请贴出正确的代码。
-
老兄!你的代码搞砸了。 option_1 = true 将失败,因为您没有使用 == 并且 option_1 不是布尔值。
-
每个组合真的有不同的文件吗?这似乎很奇怪。
标签: java if-statement hashmap logic