具有多个条件的嵌套if语句返回

时间:2017-01-27 23:37:23

标签: java

我想要做的是当一个数字可以被"fizz"整除时返回fizzNumber,当一个数字可分割时返回"fizzbuzz" fizzNumber 1}} AND buzzNumber。我知道我可以发表一个&&声明,但我正在尝试使用尽可能少的代码来实现我的需要。这里的问题是嵌套的if语句是无法访问的,我假设是因为if语句在return语句之后结束。我怎样才能解决这个问题,以便这样做可以扼杀&& amp;如果条件为真,则使用嵌套if语句同时返回两个字符串?

public String getValue(int n) {
    if (n % fizzNumber == 0) {
        return "fizz";
        if (n % buzzNumber == 0) {
            return "buzz";
        }
        return Integer.toString(n); // return the number itself as a String
   }
}

2 个答案:

答案 0 :(得分:3)

解决方案:

public String getValue(int n) {
    if (n%fizzNumber==0) {
        if (n%buzzNumber==0) {
            // dividable by both fizzNumber and buzzNumber
            return "fizzbuzz";
        }
        // dividable by fizzNumber only
        return "fizz";
    }
    return Integer.toString(n);
}

或更短(使用三元运营商):

public String getValue(int n) {
    return (n%fizzNumber==0) ? (n%buzzNumber==0 ? "fizzbuzz" : "fizz") : Integer.toString(n);
}

答案 1 :(得分:0)

你可以用这个:

public String getValue(int n) {
    String ret = "";

    if(n % fizzNumber == 0) {
        ret += "fizz";
    }
    if(n % buzzNumber == 0) {
        ret += "buzz";
    }

    if(ret.equals("")) {
        ret = Integer.toString(n);
    }

    return ret;
}

这可以优化为:

public String getValue(int n) {
    StringBuilder sb = new StringBuilder();

    if(n % fizzNumber == 0) sb.append("fizz");
    if(n % buzzNumber == 0) sb.append("buzz");

    return sb.length() == 0 ? Integer.toString(n) : sb.toString();
}

如您所见,此解决方案不使用嵌套的if语句。