当前位置: 首页 > 知识库问答 >
问题:

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

充运浩
2023-03-14

首先,我想说我已经有几年没有编码了,所以我的知识有点不稳定。我在寻求一些帮助,基本上是朝着正确的方向推进。我的任务是完成一个FizzBuzz游戏变体的程序,规则是:从1-9输入2位数字,一个Fizz数字和一个buzz数字(例如: 2-7)

  • 如果n可被fizzNumber整除,或包含数字fizzNumber,则返回“fizz”

所以我把这部分记下来,我的代码如下,它编译正确。

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); 
}

现在我的下一个目标是实现getValue()方法,返回给定整数范围的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个答案

农飞尘
2023-03-14
    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;
    }
陶泳
2023-03-14

你几乎完成了你的家庭作业!这个功能在下面有评论。

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();
}
匡祖鹤
2023-03-14

这会给你想要的结果。你想先做这个组合条件,否则永远达不到。如果这个数可以被二者整除,并且首先到达另一个语句中的一个,那么它将始终计算为true,并且永远不会到达组合条件,除非它是第一个。

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"]
 类似资料:
  • 为什么能起作用?请给我解释一下为什么和怎么做!

  • 我正在尝试用名字填充JList,这些名字最终将添加到AddressBook GUI中。我想我的逻辑是,创建JList,通过一个从文本文件中读取名称的方法填充它,然后将JList添加到我的面板中。 我的文本文件如下所示: 但它只是打印出1-10个,而不是名字。我假设这是因为我使用了而不是其他东西,有什么建议吗?

  • 我有一个层,称为,另一个称为。我想知道我是否可以强制执行一条规则,上面写着: 在参数列表包含名为foo的参数的服务层中的任何公共类的任何公共方法中,断言它从权限层调用方法(理想情况下,确保在服务层中的任何其他方法之前调用该方法)。 ArchUnit可以这样做吗?

  • 我在我的服务层有一个方法: [1]这一行获取条形码,比如然后调用另一个类中的一个方法,该方法从数据库中检索有关该项目的信息,执行计算并返回价格。可能的值可以类似于。 [2]按价格对所有值进行升序排序。因此,如果列表包含和和,则将其排序为和。 当我尝试测试此方法时,当调用时,我得到空指针异常。我如何测试这个方法?我试着搜索并找到了一些关于使用mockito的问题和答案,但我不知道如何实现它。 我目前

  • 在这里,我只想确保抛出异常测试,但希望跳过调用方法在其中。我试着跟着走,但没有奏效

  • 我创建了两个类:和。下面是进行计算的方法: 这里是一个调用并显示结果的函数,不幸的是,我无法根据这本书要求它运行的方式来运行它。 任何提示都会帮助我在我的再教育过程中。