“FizzBuzz 问题”常用于考验程序员的基本功,如何使用ABAP快速实现“FizzBuzz 问题”呢?本篇给出了一个参考示例 -
1 “FizzBuzz 问题”需求如下:
- 写一个程序打印1到100这些数字。但是遇到数字为3的倍数的时候,打印“Fizz”替代数字,5的倍数用“Buzz”代替,既是3的倍数又是5的倍数打印“FizzBuzz”。
- 每个数字要以“逗号+空格”分隔;
- 注意最后一个字符的尾部不要有“逗号”
2 输出举例:
1, 2, Fizz, 4, Buzz, .... 13, 14, FizzBuzz, 16, ... 97, 98, Fizz, Buzz
3 代码实现
DATA: lv_number TYPE i VALUE 1,
lv_delimiter TYPE char2 VALUE ', ',
lv_string TYPE string,
lv_result TYPE string.
DO 100 TIMES.
IF lv_number MOD 15 = 0.
lv_string = 'FizzBuzz'.
ELSEIF lv_number MOD 3 = 0.
lv_string = 'Fizz'.
ELSEIF lv_number MOD 5 = 0.
lv_string = 'Buzz'.
ELSE.
lv_string = lv_number && ''. " int2 -> char(1)
ENDIF.
lv_number = lv_number + 1.
IF lv_result IS INITIAL.
lv_result = lv_string.
ELSE.
CONCATENATE lv_result lv_delimiter lv_string INTO lv_result RESPECTING BLANKS.
ENDIF.
ENDDO.
cl_demo_output=>display( lv_result ).
程序运行效果如下 -