你有两个整数,n1和n2作为输入。将包含从n1到n2的数字的新String []作为字符串返回,除了3的倍数,使用" Fizz"而不是数字,对于5的倍数使用" Buzz",对于3和5的倍数使用" FizzBuzz
产生(2,8)
{" 2""嘶嘶声"" 4""巴斯""嘶嘶声",& #34; 7"" 8"}
生成(10,16)
{"巴斯"" 11""嘶嘶声"" 13"" 14",& #34; FizzBuzz" 16}
MyApproach
我正在检查从n1到n2,nos可以被3& 5,by 3,by 5.如果它可以被3整除,我将该字符串存储为strnew,可以被5个存储整除,strnew中的字符串将该字符串存储在strnew中,
public String[] generate(int start, int stop)
{
String strnew[]=new String[stop-start+1];
{
for(int i=start;i<=stop;i++)
{
if((i%3==0)&&(i%5==0))
strnew[i]="FizzBuzz";
else if(i%3==0)
strnew[i]="Fizz";
else if(i%5==0)
strnew[i]="Buzz";
else
strnew[i]=""+i;
}
return strnew;
}
}
MyQuestion:
我做错了什么?有谁能指导我。
输出
Parameters Actual Output Expected Output
'2' '8' null {'2','Fizz','4','Buzz','Fizz','7','8'}
答案 0 :(得分:2)
您需要抵消存储阵列中的位置(start
不是0
)。在strnew
之后不需要阻止,我更喜欢if
和else if
块上的大括号。像,
static String[] generate(int start, int stop) {
String strnew[] = new String[stop - start + 1];
for (int i = 0; i < strnew.length; i++) {
int value = start + i;
if (value % 15 == 0) {
strnew[i] = "FizzBuzz";
} else if (value % 3 == 0) {
strnew[i] = "Fizz";
} else if (value % 5 == 0) {
strnew[i] = "Buzz";
} else {
strnew[i] = String.valueOf(value);
}
}
return strnew;
}
答案 1 :(得分:0)
public String[] generate(int start, int stop){
String ar[]=new String[stop-start+1];
int num=start;
String s1="Fizz";
String s2="Buzz";
String s3="FizzBuzz";
for(int i=0;i<ar.length;i++){
if((num%3==0)&&(num%5!=0)){
ar[i]=s1;
}
else if((num%5==0)&&(num%3!=0)){
ar[i]=s2;
}
else if((num%3==0)&&(num%5==0)){
ar[i]=s3;
}
else{
String str="";
str=str+num;
ar[i]=str;
}
num=num+1;
}
return ar;
}