首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >一个用于嵌套'if‘语句的'else’

一个用于嵌套'if‘语句的'else’
EN

Stack Overflow用户
提问于 2014-03-25 06:59:21
回答 12查看 6.6K关注 0票数 18

我有一个问题,可以简化为:

代码语言:javascript
复制
parameters: a, b

if (a > 5)
{
    Print("Very well, a > 5");

    if (b > 7)
        Print("Even better, b > 7");
    else
    {
        Print("I don't like your variables");
    }
}
else
{
    Print("I don't like your variables");
}

我只想使用一个else而不是两个,因为它们是相同的代码。我想到的是创建一个额外的方法,它将返回组合的true``false,但这是一个严重的夸大其词。

另一种选择是goto,但这会降低代码的可读性和安全性。

如何做到这一点,避免多次检查相同的条件,并使其尽可能地可读性?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2014-03-25 07:53:16

布尔逻辑101:

代码语言:javascript
复制
public void test(int a, int b, int c) {
    boolean good = true;
    if (good = good && a > 5) {
        System.out.println("Very well, a > 5");
    }
    if (good = good && b > 7) {
        System.out.println("Even better, b > 7");
    }
    if (good = good && c > 13) {
        System.out.println("Even better, c > 13");
    }
    // Have as many conditions as you need, and then
    if (!good) {
        System.out.println("I don't like your variables");
    }
}

或者-如果你想要一大堆支票-

代码语言:javascript
复制
enum Tests {
    A_gt_5 {
        @Override
        boolean test(int a, int b, int c) {
            return a > 5;
        }
    },
    B_gt_7 {
        @Override
        boolean test(int a, int b, int c) {
            return b > 7;
        }
    },
    C_gt_13 {
        @Override
        boolean test(int a, int b, int c) {
            return c > 13;
        }
    };

    abstract boolean test (int a, int b, int c);
}

public void test(int a, int b, int c) {
    boolean good = true;
    for ( Tests t : Tests.values() ) {
        good = good && t.test(a, b, c);
        if (!good) {
            break;
        }
    }
    if (!good) {
        System.out.println("I don't like your variables");
    }
}
票数 15
EN

Stack Overflow用户

发布于 2014-03-25 07:08:19

代码语言:javascript
复制
void doILikeYourVariables(int a, int b) {
  if (a > 5) {
    Print("Very well, a > 5");
    if (b > 7) {
      Print("Even better, b > 7");
      return;
    }
  }
  Print("I don't like your variables");
}
票数 21
EN

Stack Overflow用户

发布于 2014-03-25 07:34:37

代码语言:javascript
复制
if (a > 5)
{
    Print("Very well, a > 5");
}
if(a > 5 && b >7)
{
    Print("Even better, b > 7");
}
else
{
    Print("I don't like your variables");
}

代码语言:javascript
复制
bool isEvenBetter = false;
if (a > 5)
{
    Print("Very well, a > 5");
    isEvenBetter = b > 7;
}
if(isEvenBetter)
{
    Print("Even better, b > 7");
}
else
{
    Print("I don't like your variables");
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22622332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档