Kotlin实现Fizz-Buzz逻辑异常,请求排查代码问题
Fizz-Buzz代码问题分析与修正
你的代码核心问题是第一个条件的逻辑运算符错误,导致分支判断完全混乱:
- 原代码第一个if用了
||(逻辑或),意思是只要是3的倍数或者5的倍数就输出FizzBuzz,这会直接覆盖后面的Buzz和Fizz分支——比如数字3、5都会错误输出FizzBuzz,而不是各自的Fizz、Buzz。 - 正确逻辑应该是同时是3和5的倍数才输出FizzBuzz,所以要把
||改成&&(逻辑与)。
另外要注意条件判断的顺序:必须先判断同时满足两个条件的情况,再分别判断单个条件,否则会被优先级高的分支提前拦截。
修正后的代码如下:
for (i in 1..100) { if (i % 5 == 0 && i % 3 == 0) { println("FizzBuzz") } else if (i % 5 == 0) { println("Buzz") } else if (i % 3 == 0) { println("Fizz") } else { println(i) } }
运行这段代码就能得到符合要求的结果:
- 3的倍数输出Fizz
- 5的倍数输出Buzz
- 同时是3和5的倍数输出FizzBuzz
- 其他数字输出本身
内容的提问来源于stack exchange,提问作者Cluadia Hedda
相关产品推荐
相关产品推荐

