在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;
}
}
}
}