最近,在一些论坛看了一些面试题目,其中有一道题是用java代码实现FizzBuzz问题。FizzBuzz是什么东东呢?。。。先找下度娘吧,看看什么是FizzBuzz。原来FizzBuzz是借鉴一个英国学校里小孩子经常玩的游戏。改编后的题目大概是这样的 “编写程序把1-100的数字打印出来。不过,要把3的倍数打成"Fizz",把5的倍数打成"Buzz"。而如果一个数既是3的倍数。又是5的倍数时,就打成"Fizz-Buzz",其余的输出数字。然后在论坛看见这道编程题很多计算级系的高材生(博士、硕士之类的)都不能现场写出来,更有多年经验自称高级开发程序员在几分钟内也写不出来。。。(这),不过既然说到这了,那就先打开Eclipse来考验下自己,最后我是通过两种方式来实现的:
第一种:利用循环和条件判断,过滤满足特定条件的数字,然后输出结果,代码如下:
for (int i = 1; i <= 100; i++) {
if (i%3==0) {
if(i%5==0){
System.out.println("FizzBuzz"+i);
continue;
}else {
System.out.println("Fizz"+i);
continue;
}
}else if(i%5==0){
System.out.println("Buzz"+i);
continue;
}else {
System.err.println(i);
continue;
}
}
这段代码中,符合即是3的倍数又是5的倍数这一条件,也可以用3和5的最小公倍数15来实现,具体代码就不贴出来了。
运行结果为:
第二种:是用三元运算符来实现,代码如下:
String result = null;
for (int i = 1; i <= 100; i++) {
result = i%3==0?(i%5==0? result="FizzBuzz"+i:"Fizz"+i):(i%5==0?"Buzz"+i:i).toString();
System.out.println(result);
}
运行结果为:
好了,以上就是对FizzBuzz的两种解法。