在另一个中调用方法来填充数组

时间:2017-01-28 00:08:22

标签: java fizzbuzz

我首先要说的是,自从我编码以来已经过了几年,所以我的知识有点不稳定。我正在寻求一些帮助,基本上是朝着正确的方向努力。 我的任务是完成一个FizzBu​​zz游戏的变种程序,规则是: 输入1-9的2位数字,一个Fizz号码和一个热门号码(例如:2 7)

  • 如果n可以被fizzNumber整除,或者包含数字fizzNumber,则返回" fizz"
  • 如果n可以被buzzNumber整除,或者包含数字buzzNumber,则返回" buzz"
  • 但是,如果上述两个条件均属实,则必须返回" fizzbuzz"
  • 如果上述条件均不属实,请自行返回该号码。

所以我得到了那部分,我的代码如下,并且它正确编译。

public String getValue(int n) {

boolean fz = false;     //fz will symbolize fizz in my logic
boolean bz = false;    //bz will symbolize buzz in my logic

//if n is divisible by fizzNumber, or contains the digit fizzNumber, return "fizz"
    if(n % fizzNumber == 0 || Integer.toString(n).contains(Integer.toString(fizzNumber)))
    fz = true;

//if n is divisible by buzzNumber, or contains the digit buzzNumber, return "buzz"
    if(n % buzzNumber == 0 || Integer.toString(n).contains(Integer.toString(buzzNumber))) //Check for buzz
    bz = true;

//if both the above conditions are true, you must return "fizzbuzz"
if (fz == true && bz == true)
    return("fizzbuzz");
 //return fizz
    else if (fz == true)
    return("fizz");
//return buzz
    else if(bz == true)
    return("buzz");
// return the number itself as a String
    else
    return Integer.toString(n); 
}

现在我的下一个目标是实现getValues()方法,以返回给定整数范围的fizzbuzz值数组。此方法应在内部调用getValue()方法来计算单个整数的fizzbuzz值,并将其存储到最终要返回的数组中。

public String[] getValues(int start, int end) {
        }

例如,如果fizz数为3且buzz数为4,则getValues(2,7)应返回一个字符串数组:

  {"2", "fizz", "buzz", "5", "fizz", 7}

我正在考虑使用类似这样的for循环执行此操作

for(start = 0; end >= start; start ++){

    }

但我真的不知道如何将getValue方法实现到我的循环中并将其存储在数组中。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

这应该会给你你想要的结果。您希望首先执行组合条件,否则永远不会达到它。如果数字可以被两者整除,并且首先到达其中一个语句,它将始终评估为真,并且除非是第一个,否则永远不会达到组合条件。

public String[] getValues(int start, int end) {
    List<String> vals = new ArrayList<>();

    for (int i = start; i <= end; i++) {
        if (i % (fizzNumber * buzzNumber) == 0) vals.add("fizzbuzz");
        else if (i % fizzNumber == 0) vals.add("fizz");
        else if (i % buzzNumber == 0) vals.add("buzz");
        else vals.add(i.toString());
    }

    return vals.toArray();
}


int fizzNumber = 3;
int buzzNumber = 5;
String[] arr = getValues(10, 20);
// ["buzz", "11", "fizz", "13", "14", "fizzbuzz", "16", "17", "fizz", "19", "buzz"]

答案 1 :(得分:0)

你几乎完成了你的功课!该功能如下所示。

public String[] getValues(int start, int end) {
    // create the storage list
    List<String> words = new ArrayList<String>();
    for(int i=start; i<=end; i++){
        // append the string to the list
        words.add(getValue(i));
    }
    //return the stored words as String[]
    return words.toArray();
}

答案 2 :(得分:-1)

    public String[] getValues(int start, int end) {
        List<String> valueList = new ArrayList<>();
        for (int i = start; i <= end; i++) {
            valueList.add(getValue(i));
        }
        String[] valueArr = new String[valueList.size()];
        valueArr = valueList.toArray(valueArr);
        return valueArr;
    }