生成新字符串数组的输出不会按预期进行

时间:2015-12-03 03:47:09

标签: java arrays

  

你有两个整数,n1和n2作为输入。将包含从n1到n2的数字的新String []作为字符串返回,除了3的倍数,使用" Fizz"而不是数字,对于5的倍数使用" Buzz",对于3和5的倍数使用" FizzBu​​zz

示例输入#1

产生(2,8)

样本输出#1

{" 2""嘶嘶声"" 4""巴斯""嘶嘶声",& #34; 7"" 8"}

示例输入#2

生成(10,16)

样本输出#2

{"巴斯"" 11""嘶嘶声"" 13"" 14",& #34; FizzBu​​zz" 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'}

2 个答案:

答案 0 :(得分:2)

您需要抵消存储阵列中的位置(start不是0)。在strnew之后不需要阻止,我更喜欢ifelse 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;
}