Java實現FizzBuzz問題

參考:簡單卻又複雜的FizzBuzz面試編程問題

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章