(Java)查找可被数字整除的数字并添加到要打印的数组的方法

时间:2015-10-07 13:53:01

标签: java arrays numbers division

我想创建一个方法来找到一个可被数字整除的数字,并将这些数字添加到一个数组中,以便稍后在调用该方法时打印出来。

我做到了这一点:

int [] divider(int n) {
    int [] result = new int[20];
    for (int i = 0; i <= n; i++) {
       if (n%i == 0)
          result = result[i];
    }
    return result;
}

我知道很多方面都错了,但我试过了。这是我知道我需要做的两件事,但我不知道如何:

  1. 我知道我计算了一个数字可以被数字整除的数量,以便知道要创建多大的数组。问题是我知道如何找到有多少数字,但我不知道如何使用该数字在方法中自行创建数组。

  2. 之后我需要找到它可以除以另一个数字的那些数字。我可以这样做,但我不知道如何将这些结果添加到数组中以便以后打印出来。

  3. 这些是我直到现在所知道的。请帮忙。谢谢。

3 个答案:

答案 0 :(得分:1)

以下是测试:

public static void main(String[] args) {
    Integer [] arr = divider(60);
    for (Integer integer : arr) {
        System.out.println(integer);
    }
}

你应该用&#34; n / 2&#34;完成你的循环。因为&#34; n&#34;的第二个最大分频器必须是&#34; n / 2&#34;:即:第二个最大分频器60是30和&#34; i&#34;必须以&#34; 1&#34;因为你不能用&#34; 0&#34;来划分数字。循环完成后,我们应该添加&#34; n&#34;进入列表因为&#34; n&#34;的最大分隔符是&#34; n&#34;。

static Integer [] divider(int n) {
    List<Integer> resultList = new ArrayList<Integer>();
    Integer [] result;
    for (int i = 1; i <= n/2; i++) {
       if (n%i == 0)
           resultList.add(i);
    }
    resultList.add(n);
    result = resultList.toArray(new Integer[resultList.size()]);

    return result;
}

答案 1 :(得分:0)

您可以尝试将它们添加到ArrayList,而ArrayList您不需要事先知道尺寸,您可以随身携带它们,也可以看看您无需查看所有1n-1个数字。

如果您无法更改方法的定义,那么您可以将它们添加到新数组中。如果你可以改变定义,那么你可以简单地返回结果。

int[] divider(int n) {
    ArrayList<Integer> result=new ArrayList<Integer>();
    for (int i = 1; i <= n/2; i++) { //only check for half of the numbers
       if (n%i == 0)
          result = result[i];
    }
    int[] a=new int[result.size()];
    for(int i=0;i<a.length;i++){
       a[i]=results.get(i);
    }
    return a;
}

答案 2 :(得分:0)

这可以在没有List的情况下完成,因为您可以绑定分隔输入n的数字的数量。最简单的方法是说n不能超过n个分隔符。一个更聪明的界限是sqrt(n)。你想要一个大小的阵列?这是:sqrt(n) + 1+1表示完美的正方形)。

在方法结束时,您可以计算实际的分隔数并将其复制到新数组中。此方法可能效率低于使用List,但如果仅限于数组,则可以采用此方法。