複製代碼代碼如下:
package test;
/**
* 你是體育老師,在某堂課距離下課還有五分鐘時,你決定搞一個遊戲。此時有100名學生在上課。遊戲的規則是:
*
* 1. 你先說出三個不同的特殊數,要求必須是個位數,例如3、5、7。
* 2. 讓所有學生拍成一隊,然後依序報數。
* 3.學生報數時,如果所報數字是第一個特殊數(3)的倍數,那麼不能說該數字,而要說Fizz;如果所報數字是第二個特殊數(5)的倍數,那麼要說Buzz;如果所報數字是第三個特殊數(7)的倍數,那麼要說Whizz。
* 4.學生報數時,如果所報數字同時是兩個特殊數的倍數情況下,也要特殊處理,比如第一個特殊數和第二個特殊數的倍數,那麼不能說該數字,而是要說FizzBuzz,以此類推。如果同時是三個特殊數的倍數,那麼要說FizzBuzzWhizz。
* 5.學生報數時,如果所報數字包含了第一個特殊數,那麼也不能說該數字,而是要說相應的單詞,比如本例中第一個特殊數是3,那麼要報13的同學應該說Fizz。如果數字中包含了第一個特殊數,那麼忽略規則3和規則4,例如要報35的同學只報Fizz,不報BuzzWhizz。
*
* 現在,我們需要你完成一個程式來模擬這個遊戲,它先接受3個特殊數,然後輸出100名學生應該報數的數或單字。
*
* @author liuxuewen
*
*/
public class FizzBuzzWhizz {
public static void main(String[] args) {
int a = 3;/*第一個特殊字*/
int b = 5;/*第二個特殊字*/
int c = 7;/*第三個特殊字*/
int start = 1;/*開始報數的數字*/
int end = 100;/*結束報數的數字*/
String[] output = { "Fizz", "Fizz", "Buzz", "Whizz", "FizzBuzz", "FizzWhizz", "BuzzWhizz", "FizzBuzzWhizz" };/*存放標誌字串陣列*/
int index = -1;/*預設字串索引為-1*/
/*循環進行報數*/
for (int i = start; i <= end; i++) {
/*先判斷第5的條件,再判斷第三的條件,最後判斷第4的條件*/
index = (i % 10 == a || i / 10 == a) ? 0 : -1;
index = (-1 == index) ? ((i % a == 0 && i % b == 0) ? 4 : (i % a == 0 && i % c == 0) ? 5 : (i % b == 0 && i % c == 0) ? 6 : -1) : index;
index = (-1 == index) ? ((i % a == 0) ? 1 : (i % b == 0) ? 2 : (i % c == 0) ? 3 : -1) : index;
/*輸出結果*/
System.out.println((-1 == index ? i : output[index]));
}
}
}