在CodingBat网站上偶然看到,觉得有点意思。简单来说,依次输出1~100之间的整数,是3的倍数就改为输出“FIzz”,是5的倍数就输出“Buzz”,是15的倍数就输出“FizzBuzz”。
自己先凭直觉写了个最笨的Java代码:
public class FizzBuzz {
/*判断x是否为3、5、15的倍数*/
public static int test(int x) {
int rem = x % 15;
if(rem == 0) return 3; //是15的倍数
rem = x % 3;
if(rem == 0) return 1; //是3的倍数
rem = x % 5;
if(rem == 0) return 2; //是5的倍数
return 0; //都不是
}
public static void main(String[] args) {
for(int x = 1; x <= 100; x++) {
switch(test(x)) {
case 3:
System.out.println("FizzBuzz"); break;
case 1:
System.out.println("Fizz"); break;
case 2:
System.out.println("Buzz"); break;
default:
System.out.println(x); break;
}
}
}
}
缺点是代码不简洁。看了链接文章评论里的好多解法后,最喜欢这个实现方法(好像和我的思路是一样的,这个更简洁):
public class FizzBuzz {
public static void main(String[] args) {
for(int i=1; i<=100; i++) {
int flag = 0;
flag += (i%3==0)? 1:0; //如果i是3的倍数,flag加1
flag += (i%5==0)? 2:0; //如果i是5的倍数,flag加2
switch(flag) {
case 1:
System.out.println("Fizz"); break;
case 2:
System.out.println("Buzz"); break;
case 3:
System.out.println("FizzBuzz"); break;
case 0:
System.out.println(i); break;
}
}
}
}