我可以从解决这个 FizzBuzz 式问题的解决方案中消除嵌套的 if-else 吗?
Can I eliminate the nested if-else from my solution to this FizzBuzz-style problem?
我被要求解决以下问题。
- 如果整数可以被 3 整除,return 字符串 "Java".
- 如果整数能被3整除又能被4整除,return
字符串 "Coffee"
- 如果整数是以上其中之一且为偶数,则将"Script"添加到
字符串的结尾。否则,return 字符串 "mocha_missing!
示例输入和输出
- caffeineBuzz(1) => "mocha_missing"
- caffeineBuzz(3) => "Java"
- caffeineBuzz(6) => "JavaScript"
- caffeineBuzz(12) => "CoffeeScript"
而我的解决方案如下:
//Class
public class CoffieScriptGenerator {
public String caffeineBuzzz(Integer number) {
if(isDivisbleByThreeAndFour(number))
{
if(isEven(number))
return "CoffeeScript";
else
return "Coffee";
}
if(isDivisbleByThree(number))
{
if(isEven(number))
return "JavaScript";
else
return "Java";
}
return "mocha_missing!";
}
private boolean isEven(Integer number) {
return number%2==0;
}
private boolean isDivisbleByThreeAndFour(Integer number) {
return isDivisbleByThree(number) && number%4==0;
}
private boolean isDivisbleByThree(Integer number) {
return number%3==0;
}
}
请提供重构和改进它的建议,以及我如何借助 Strategy 等模式改进这种嵌套 if-else。
解决这类问题的一个好的设计模式是从顶部的空字符串开始。然后,当您的代码向下流动并检查某些条件时,您可以在执行过程中将文本附加到字符串的末尾。然后,当您到达该方法的末尾时,您的字符串已全部构建完毕,您可以简单地 return 它。
这种设计的优点是你的方法只有一个出口点(只有一个return语句)。
我被要求解决以下问题。
- 如果整数可以被 3 整除,return 字符串 "Java".
- 如果整数能被3整除又能被4整除,return 字符串 "Coffee"
- 如果整数是以上其中之一且为偶数,则将"Script"添加到 字符串的结尾。否则,return 字符串 "mocha_missing!
示例输入和输出
- caffeineBuzz(1) => "mocha_missing"
- caffeineBuzz(3) => "Java"
- caffeineBuzz(6) => "JavaScript"
- caffeineBuzz(12) => "CoffeeScript"
而我的解决方案如下:
//Class
public class CoffieScriptGenerator {
public String caffeineBuzzz(Integer number) {
if(isDivisbleByThreeAndFour(number))
{
if(isEven(number))
return "CoffeeScript";
else
return "Coffee";
}
if(isDivisbleByThree(number))
{
if(isEven(number))
return "JavaScript";
else
return "Java";
}
return "mocha_missing!";
}
private boolean isEven(Integer number) {
return number%2==0;
}
private boolean isDivisbleByThreeAndFour(Integer number) {
return isDivisbleByThree(number) && number%4==0;
}
private boolean isDivisbleByThree(Integer number) {
return number%3==0;
}
}
请提供重构和改进它的建议,以及我如何借助 Strategy 等模式改进这种嵌套 if-else。
解决这类问题的一个好的设计模式是从顶部的空字符串开始。然后,当您的代码向下流动并检查某些条件时,您可以在执行过程中将文本附加到字符串的末尾。然后,当您到达该方法的末尾时,您的字符串已全部构建完毕,您可以简单地 return 它。
这种设计的优点是你的方法只有一个出口点(只有一个return语句)。