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

猜你喜欢

转载自blog.csdn.net/cunane/article/details/85410761
今日推荐