具有类似标准的多个IF语句JAVA

时间:2016-02-05 06:44:23

标签: java

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条件,有没有办法让它变得更简洁和整洁?

3 个答案:

答案 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)) {
    ...
}

如果您以某种方式允许currencyChosenconvertTo无效,则应首先检查:

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)

使用方法(假设currencyChosenconvertTo为字段):

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);
}