我想要做的是当一个数字可以被"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
}
}
答案 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语句。