FizzBuzzWhizz

来源:互联网 发布:java图形用户界面实例 编辑:程序博客网 时间:2024/04/29 13:33
public static void main(String args[]){
Funny f = new Funny();
f.doItNow(106, 3, 5, 7);
}

/**
* 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名学生应该报数的数或单词。
*/

private void doItNow(int sum,int a,int b,int c) {
// TODO Auto-generated method stub
for(int i=1;i<=sum;i++){
if(ml(i,a)){
printStr("Fizz");
}else if(i % a == 0){
calc(i,a,b,c);
}else if(i % b == 0){
calc(i,b,a,c);
}else if(i % c == 0){
calc(i,c,b,a);
}else{
System.out.println(i);
}
}
}

/**
* 分解提供参数arg1的组成数字是否包含arg2
* @param arg1
* @param arg2
* @return
*/
private boolean ml(int arg1,int arg2) {
// TODO Auto-generated method stub
if(String.valueOf(arg1).contains(String.valueOf(arg2))){
return true;
}
// if(arg1%10==arg2 || arg1/10%10==arg2 || arg1/100==arg2){
//// System.out.println("分解:"+arg/100 +" "+ arg/10%10 +" "+ arg%10);
// return true;
// }
return false;
}

/**
* @param s
* @param a
* @param b
* @param c
* 根据输入参数s是否是a、b、c的倍数选择输出不同的字符串
*/
private void calc(int s,int a,int b,int c) {
// TODO Auto-generated method stub
if(s%a==0){
if(s%b==0){
if(s%c==0){
printStr("FizzBuzzWhizz");
}else{
printStr("FizzBuzz");//+s+" "+a+" "+b+" "+c);
}
}else{
printStr("Fizz");
}
}
}

/**
* @param str
* 打印输出字符串str
*/
private void printStr(String str) {
// TODO Auto-generated method stub
System.out.println(str);
}
0 0
原创粉丝点击