【问题标题】:Java - Help writing function to return array (with Junit test)Java - 帮助编写返回数组的函数(使用 Junit 测试)
【发布时间】:2018-02-12 02:05:23
【问题描述】:

我真的可以从有更多经验的人那里学习如何编写一个函数来创建和返回一个整数数组。感谢您提供任何指导,我对通过下面描述的 Junit 测试应该采取的下一步感到非常困惑。

看来我应该能够从测试中获得相当多的洞察力,但是这是我第一次接触 Junit 测试。谁能帮我解释一下这个单元测试sn-p?

目标

编写一个创建并返回整数数组的函数:

  • 值应介于 0 到 100000 之间。
  • 使用 Math.random() 生成从 0.0 到 1.0 的随机数。
  • 必须通过 Junit 测试(参见下面的 sn-p)

注意:我最终会编写冒泡排序和选择排序的函数。我还将报告大小为 1000 到 10000 的向量(随机整数)的时间,步进 1000,冒泡和选择排序函数需要多长时间。

generateNumbers 的 Junit 测试

@org.junit.Test
public void generateNumbers() {
    for (int i = 1; i < 10000; i += 10) {
        int[] newArray = SortingDriver.generateNumbers(i);
        Assert.assertEquals(i, newArray.length);
    }
}

当前代码(排序驱动程序)

    public static int[] generateNumbers(int howMany) {
    // TODO: Create and return array of integers
    // TODO: The values should be from 0 to 100000
    // TODO: Use Math.random() to generate random numbers from 0.0 to 1.0

    int size = 100000;

    // Create array of integers
    int[] sortMe = new int[size];

    // Utilize random function to create a random number in between 0 and 100,000
    int rand = (int)(Math.random() * (size + 1));

    // For loop?
}

【问题讨论】:

  • 不应该 int size = 100000;int size = howMany; 然后你不应该循环并生成一个随机数并将其乘以 10000
  • 您的 Junit 测试正在为您的函数提供参数 howMany 的 generateNumbers 函数的参数。测试的每次迭代,测试只检查以确保您的数组长度等于 i 的值。这就是断言的含义,因此您的函数应该返回一个填充的数组,该数组等于参数 howMany 的大小。 JUnit 测试从不检查数组索引中值的有效性,只检查数组的大小。所以 size = howMany 是您要查找的数组的大小。

标签: java arrays sorting random


【解决方案1】:
    public static int[] generateNumbers(int howMany) {

    int size = howMany;

    // Create array of integers and instantiate variable to determine random number
    int[] sortMe = new int[size];
    int rand = (int)(Math.random() * 100000 + 1);

    // For loop to generate random number
    for (int i = 1; i < sortMe.length; i += 10) {

        // Utilize random function to create a random number in array between 0 and 100,000
        sortMe[i] = rand;
    }

    return sortMe;
}

【讨论】:

    猜你喜欢
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多