题目要求:
用ruby写一个程序:要求输出一个从1到n的字符串,其中遇到能被3整除的数字时,用“Fizz”代替该数字;遇到能被5整除的数字时,用“Buzz”来代替;遇到既能被3整除又能被5整除的数字时,用“FizzBuzz”来代替,如下图所示。最后要求返回一个数组。
分析:
题目要求非常简单,逻辑上也很直观,依次判断1-n之间的每个数字是否能否被3或者5整除,从而确定其是否需要被其他字符替代,把处理之后的字符放在一个数组中;主要是会涉及循环语句和条件判断语句,还有数组的创建和添加元素。
预备知识:
1.循环语句
- while 语句
while i < n do
code
end
其中do也可以换成 : ,也可以省略不写;
- for语句
for i in 1..n
2.条件判断语句
- if...else 语句
if 条件 then
code
elsif 条件 then
code
else
code
end
需要注意的是,在Ruby中使用elsif,而不是else if ;并且通常情况下我们省略then。
3.数组的创建和添加元素
- 数组的创建
string = Array.new
- 添加元素
array << obj 把给定的对象添加到数组的末尾
在Ruby中,可以通过在变量或者常量前面加 # 字符,来访问任何变量或者常量的值。
具体代码:
# @param {Integer} n
# @return {String[]}
def fizz_buzz(n)
string = Array.new
i=0
while i < n do
i+=1
if i % 3 == 0 and i % 5==0
string << "FizzBuzz"
elsif i % 5 == 0
string << "Buzz"
elsif i % 3==0
string << "Fizz"
else
string << "#{i}"
end
end
string
end