if (currencyChosen.equals("RANDOM3") & convertTo.equals("RANDOM3"))
JOptionPane.showMessageDialog(null, "SAME SENTENCE");
else if (currencyChosen.equals("RANDOM2") & convertTo.equals("RANDOM2"))
JOptionPane.showMessageDialog(null, "SAME SENTENCE");
else if (currencyChosen.equals("RANDOM") & convertTo.equals("RANDOM"))
JOptionPane.showMessageDialog(null, "SAME SENTENCE");
如果我有一个像这样的代码,有多个但类似的if语句具有不同的if条件,有没有办法让它变得更简洁和整洁?
答案 0 :(得分:4)
听起来你可能想要这样的东西:
private static final List<String> VALID_CURRENCIES =
Arrays.asList("RANDOM", "RANDOM2", "RANDOM3");
...
if (currencyChosen.equals(convertTo) && VALID_CURRENCIES.contains(currencyChosen)) {
JOptionPane.showMessageDialog(null, "SAME SENTENCE");
}
调整变量名称以适合您的上下文。如果订单永远不重要,您也可以使用Set<String>
而不是List<String>
...虽然有少量有效选项但性能不会有太大差异。列表的HashSet
对O(N)的O(1)性质仅在N变大时才重要。当然,无论如何,您可能想要使用Set<String>
,以便将仅作为一个更清晰的处理。我的猜测是你可能有另一个理由得到有效货币的清单(按特定顺序) - 在这种情况下,也可以在这里使用该清单。
但是,根据您对上下文的描述:
我不得不写一个基本的转换器,我试图输出,例如,选择“从美元转换为美元”将输出“你无法执行该操作
听起来你可能只需要
if (currencyChosen.equals(convertTo)) {
...
}
如果您以某种方式允许currencyChosen
和convertTo
无效,则应首先检查:
if (!VALID_CURRENCIES.contains(currencyChosen)) {
// Display error for invalid source currency
return;
}
if (!VALID_CURRENCIES.contains(convertTo)) {
// Display error for invalid target currency
return;
}
if (currencyChosen.equals(convertTo)) {
// Display error for source == target
return;
}
基本上,尽量让你的错误条件正交。
答案 1 :(得分:2)
使用方法(假设currencyChosen
和convertTo
为字段):
private boolean foo(String input) { // TODO: use more meaningful names
return currencyChosen.equals(input) && convertTo.equals(input)
}
然后
if (foo("RANDOM3") || foo("RANDOM2") || foo("RANDOM")) {
JOptionPane.showMessageDialog(null, "SAME SENTENCE");
}
答案 2 :(得分:2)
您可以将其提取为类似以下内容
if (currencyChosen.equals(convertTo)) {
final boolean random3 = isRandom(currencyChosen, "RANDOM3");
final boolean random2 = isRandom(currencyChosen, "RANDOM2");
final boolean random = isRandom(currencyChosen, "RANDOM");
if (random3 || random2 || random) {
JOptionPane.showMessageDialog(null, "SAME SENTENCE");
}
}
// ....
private static boolean isRandom(String currencyChosen, String random) {
return currencyChosen.equals(random);
}