** 問題:測試實(shí)數(shù)n,輸出字符串或數(shù)值**
- 當(dāng)實(shí)數(shù)n為3的倍數(shù)题暖,輸出'Fizz'
- 當(dāng)實(shí)數(shù)n為5的倍數(shù)蝶柿,輸出'Buzz'
- 當(dāng)實(shí)數(shù)n為7的倍數(shù),輸出'Whizz'
- 當(dāng)實(shí)數(shù)n為3和5的倍數(shù)北专,輸出'FizzBuzz'
- 當(dāng)實(shí)數(shù)n為3和7的倍數(shù)畦徘,輸出'FizzWhizz'
- 當(dāng)實(shí)數(shù)n為5和7的倍數(shù)毕籽,輸出'BuzzWhizz'
- 當(dāng)實(shí)數(shù)n為3、5井辆、7的倍數(shù)关筒,輸出'FizzBuzzWhizz'
- 其余情況,輸出實(shí)數(shù)n本身杯缺。
思路
分別判斷是否是3蒸播,5,7萍肆,3&5袍榆,3&7,5&7塘揣,3&5&7的倍數(shù)
則判斷代碼如下:
if(num%3==0&&num%5!=0&&num%7!=0)
document.write('Fizz'+'</br>');
if(num%3!=0&&num%5==0&&num%7!=0)
document.write('Buzz'+'</br>');
if(num%3!=0&&num%5!=0&&num%7==0)
document.write('Whizz'+'</br>');
if(num%15==0&&num%7!=0)
document.write('FizzBuzz'+'</br>');
if(num%21==0&&num%5!=0)
document.write('FizzWhizz'+'</br>');
if(num%35==0&&num%3!=0)
document.write('BuzzWhizz'+'</br>');
if(num%105==0)
document.write('FizzBuzzWhizz'+'</br>');
if(num%3!=0&&num%5!=0&&num%7!=0)
document.write(num+'</br>');
由于過多的if語句和書寫復(fù)雜的if條件包雀,為此進(jìn)行完善。
從輸出值角度上看亲铡,有兩種輸出情況才写,分別是字符串和實(shí)數(shù)葡兑。
因此先判斷實(shí)數(shù)n是否是3、5赞草、7的倍數(shù)讹堤,如果不是,則輸出實(shí)數(shù)本身房资。
if(num%3!=0&&num%5!=0&&num%7!=0)
document.write(num+'</br>');
else
{......}
反之,進(jìn)行接下來的判斷檀头。
從輸出的字符串中轰异,發(fā)現(xiàn)代表3的倍數(shù)的字符串是'Fizz',代表5的倍數(shù)的字符串是'Buzz',代表7的倍數(shù)的字符串是'Whizz'暑始。
而表示3&5的倍數(shù)是在'Fizz'的后面加上'Buzz'搭独,其他的3&7,5&7,3&5&7的倍數(shù)表達(dá)方式與3&5的倍數(shù)表達(dá)方式一樣。由此可以看成幾個字符串上的相加成一個新的字符串廊镜。
因此定義一個無字符串的變量out
var out="";
如果是3的倍數(shù)牙肝,則在變量out上加'Fizz';如果是5的倍數(shù),則在變量out上加'Buzz';如果是7的倍數(shù)嗤朴,則在變量out上加'Whizz'配椭。最后輸出變量out。
if(num%3==0)
out+="Fizz";
if(num%5==0)
out+="Buzz";
if(num%7==0)
out+="Whizz";
代碼
function test(num)
{
if(num%3!=0&&num%5!=0&&num%7!=0)
document.write(num+'</br>');
else
{
var out="";
if(num%3==0)
out+="Fizz";
if(num%5==0)
out+="Buzz";
if(num%7==0)
out+="Whizz";
document.write(out+'</br>');
}
}
test(2);
test(3);
test(5);
test(7);
test(3*5);
test(3*7);
test(5*7);
test(105);